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

Joh*_*der 108 c++ python command-line visual-studio-2008

我正在为使用Monotone,CMake,Visual Studio Express 2008和自定义测试的大型C++解决方案编写结帐,构建,分发,测试和提交周期的脚本.

所有其他部分看起来都很简单,但我没有看到如何在没有获取GUI的情况下编译Visual Studio解决方案.

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

Mos*_*rtz 113

我知道有两种方法可以做到.

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

msbuild project.sln /Flags...
Run Code Online (Sandbox Code Playgroud)

方法2
您还可以运行:

vcexpress project.sln /build /Flags...
Run Code Online (Sandbox Code Playgroud)

vcexpress选项立即返回,不打印任何输出.我想这可能是你想要的脚本.

请注意,DevEnv不随Visual Studio Express 2008一起发布(当我第一次遇到类似问题时,我花了很多时间试图解决这个问题).

所以,最终结果可能是:

os.system("msbuild project.sln /p:Configuration=Debug")
Run Code Online (Sandbox Code Playgroud)

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


Jef*_*tin 44

MSBuild通常有效,但我以前遇到过困难.你可能会有更好的运气

devenv YourSolution.sln /Build 
Run Code Online (Sandbox Code Playgroud)

  • 您还可以指定配置:`devenv YourSolution.sln/Build Debug` (7认同)
  • 也可以通过在一个空格后附加调试或发布来为发布或调试模式重建。例如:`devenv YourSolution.sln /rebuild release` 或`devenv YourSolution.sln /rebuild debug` (2认同)

Dev*_*per 17

说实话,我必须加2美分.

你可以用msbuild.exe来做.有很多版本的 msbuild.exe.

C:\ Windows\Microsoft.NET\Framework64\v2.0.50727\msbuild.exe C:\ Windows\Microsoft.NET\Framework64\v3.5\msbuild.exe C:\ Windows\Microsoft.NET\Framework64\v4.0.30319\msbuild.exe
C:\ Windows\Microsoft.NET\Framework\v2.0.50727\msbuild.exe C:\ Windows\Microsoft.NET\Framework\v3.5\msbuild.exe C:\ Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe

使用您需要的版本.基本上你必须使用最后一个.

C:\ WINDOWS\Microsoft.NET\Framework64\v4.0.30319\msbuild.exe

那怎么做呢.

  1. 运行COMMAND窗口

  2. 输入msbuild.exe的路径

C:\ WINDOWS\Microsoft.NET\Framework64\v4.0.30319\msbuild.exe

  1. 输入项目解决方案的路径,如

"C:\ Users\Clark.Kent\Documents\visual studio 2012\Projects\WpfApplication1\WpfApplication1.sln"

  1. 在解决方案路径后添加所需的任何标志.

  2. ENTER键

请注意,您可以获得有关所有可能标记的帮助

C:\ Windows\Microsoft.NET\Framework64\v4.0.30319\msbuild.exe/help

  • 我非常喜欢您为新开发者添加的详细信息,例如在哪里可以找到msbuild等。 (3认同)

jos*_*sch 8

使用msbuild其他人指出的工作对我来说,但我需要做的不仅仅是那个.首先,msbuild需要访问编译器.这可以通过运行来完成:

"C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat"
Run Code Online (Sandbox Code Playgroud)

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

"C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe" myproj.sln
Run Code Online (Sandbox Code Playgroud)

最后,我的项目正在使用一些变量,如$(VisualStudioDir).似乎那些没有设置,msbuild所以我不得不通过/property选项手动设置它们:

"C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe" /property:VisualStudioDir="C:\Users\Administrator\Documents\Visual Studio 2013" myproj.sln
Run Code Online (Sandbox Code Playgroud)

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

额外奖励:似乎命令行工具在使用它们30天后不需要注册,就像基于GUI的"免费"Visual Studio社区版一样.有了Microsoft注册要求,该版本几乎不免费.如果有的话,免费在Facebook上...