如何从命令行编译 Visual Studio 项目?

新手上路,请多包涵

我正在为使用 MonotoneCMake 、 Visual Studio Express 2008 和自定义测试的大型 C++ 解决方案编写签出、构建、分发、测试和提交周期脚本。

所有其他部分看起来都非常简单,但我不知道如何在没有 GUI 的情况下编译 Visual Studio 解决方案。

该脚本是用 Python 编写的,但一个答案可以让我只调用: os.system 就可以了。

原文由 John Mulder 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 776
2 个回答

我知道有两种方法可以做到这一点。

方法一

第一种方法(我更喜欢)是使用 msbuild

 msbuild project.sln /Flags...

方法二

您还可以运行:

 vcexpress project.sln /build /Flags...

vcexpress 选项立即返回并且不打印任何输出。我想这可能是您想要的脚本。

请注意,DevEnv 没有随 Visual Studio Express 2008 分发(当我第一次遇到类似问题时,我花了很多时间试图弄清楚这一点)。

因此,最终结果可能是:

 os.system("msbuild project.sln /p:Configuration=Debug")

您还需要确保您的环境变量是正确的,因为默认情况下 msbuild 和 vcexpress 不在系统路径上。要么启动 Visual Studio 构建环境并从那里运行你的脚本,要么修改 Python 中的路径(使用 os.putenv )。

原文由 Moses Schwartz 发布,翻译遵循 CC BY-SA 3.0 许可协议

正如其他人指出的那样,使用 msbuild 对我有用,但我需要做的远不止这些。首先, msbuild 需要能够访问编译器。这可以通过运行来完成:

 "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat"

然后 msbuild 不在我的 $PATH 中,所以我必须通过它的显式路径运行它:

 "C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe" myproj.sln

最后,我的项目使用了一些变量,例如 $(VisualStudioDir) 。似乎这些不是由 msbuild 设置的,所以我必须通过 /property 选项手动设置它们:

 "C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe" /property:VisualStudioDir="C:\Users\Administrator\Documents\Visual Studio 2013" myproj.sln

那条线终于让我编译了我的项目。

奖励:似乎命令行工具在使用 30 天后不需要注册,就像“免费”的基于 GUI 的 Visual Studio 社区版一样。有了 Microsoft 注册要求,该版本几乎不是免费的。如果有的话,就像在 Facebook 中一样免费……

原文由 josch 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题