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

时间:2009-01-31 02:52:26

标签: c++ python visual-studio-2008 command-line

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

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

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

7 个答案:

答案 0 :(得分:105)

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

方法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")

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

答案 1 :(得分:41)

MSBuild通常有效,但我以前遇到过困难。

你可能会有更好的运气
devenv YourSolution.sln /Build 

答案 2 :(得分:15)

说实话,我必须加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 \框架\ V2.0.50727 \ msbuild.exe   C:\ WINDOWS \ Microsoft.NET \框架\ v3.5版本\ msbuild.exe   C:\的Windows \ Microsoft.NET \框架\ v4.0.30319 \ msbuild.exe

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

  

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

那怎么做。

  1. 运行命令窗口

  2. 输入msbuild.exe的路径

  3.   

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

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

      “C:\ Users \ Clark.Kent \ Documents \ visual studio   2012 \项目\ WpfApplication1 \ WpfApplication1.sln“

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

      2. ENTER

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

          

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

答案 3 :(得分:6)

正如其他人所指出的那样使用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上免费...

答案 4 :(得分:3)

MSBuild is your friend.

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

答案 5 :(得分:2)

DEVENV在很多情况下运行良好,但是在WIXPROJ上构建我的WIX安装程序,我得到的只是Out日志中的“CATASTROPHIC”错误。

这有效: MSBUILD /Path/PROJECT.WIXPROJ / t:Build / p:Configuration = Release

答案 6 :(得分:0)

MSBuild 和 DevEnv 都理所当然地在此处的答案中建议作为从命令行构建的方法。我想指出微软是这样说的:“一般来说,DEVENV 比直接使用 MSBuild 更受欢迎,因为你可以让 Visual Studio 处理 MSBuild 的复杂性。”

Reference