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

我正在为使用Monotone , CMake ,Visual Studio Express 2008和自定义testing的大型C ++解决scheme编写签出,构build,分发,testing和提交周期脚本。

所有其他部分看起来非常直截了当,但是我没有看到如何在没有获得GUI的情况下编译Visual Studio解决scheme。

该脚本是用Python编写的,但答案只允许我打电话给:os.system会做。

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

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

msbuild project.sln /Flags... 

方法2
你也可以运行:

 vcexpress project.sln /build /Flags... 

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

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

所以最终的结果可能是:

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

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

MSBuild通常工作,但我遇到困难之前。 你可能有更好的运气

 devenv YourSolution.sln /Build 

说实话,我必须补充我的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. inputmsbuild.exe的path

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

  1. input项目解决scheme的path

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

  1. 在解决schemepath之后添加您需要的任何标志。

  2. ENTER键

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

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

MSBuild是你的朋友。

 msbuild "C:\path to solution\project.sln" 

用别人指出的msbuild为我工作,但我需要做的不仅仅是这一点。 首先, msbuild需要访问编译器。 这可以通过运行:

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

然后msbuild不在我的$ PATH中,所以我不得不通过它的显式path来运行它:

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

最后,我的项目使用了一些像$(VisualStudioDir)这样的variables。 看来这些不会由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社区版一样。 随着微软的注册要求,该版本几乎是免费的。 如果有任何事情,免费在Facebook的…

DEVENV在许多情况下运行良好,但是在WIXPROJ上构build我的WIX安装程序,我所得到的只是Out日志中的“灾难性”错误。

这工作:MSBUILD /path/PROJECT.WIXPROJ / t:生成/ p:configuration=发布