我正在为使用Monotone,CMake,Visual Studio Express 2008和自定义测试的大型C++解决方案编写签出,构建,分发,测试和落实循环脚本。如何从命令行编译Visual Studio项目?
所有其他部分看起来非常直截了当,但我没有看到如何编译Visual Studio解决方案而无需获取GUI。
该脚本是用Python编写的,但答案只允许我打电话给:os.system会这样做。
我正在为使用Monotone,CMake,Visual Studio Express 2008和自定义测试的大型C++解决方案编写签出,构建,分发,测试和落实循环脚本。如何从命令行编译Visual Studio项目?
所有其他部分看起来非常直截了当,但我没有看到如何编译Visual Studio解决方案而无需获取GUI。
该脚本是用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")
你还需要确保你的环境变量是正确的,因为MSBuild的和vcexpress是不是默认的系统路径。启动Visual Studio构建环境并从那里运行脚本,或者修改Python中的路径(使用os.putenv)。
msbuild "C:\path to solution\project.sln"
的MSBuild通常工作,但我以前碰到的困难。你可能有更好的运气
devenv YourSolution.sln /Build
MSBuild不适用于Visual Fortran项目(* .vfproc)。感谢指向我devenv,这是。 – 2010-10-01 12:44:31
我不得不使用:devenv YourSolution.sln/Build但非常感谢。 – bobwah 2011-05-16 10:49:45
说实话我得加我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 \微软.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
那么如何做到这一点。
运行COMMAND窗口
输入路径msbuild.exe
C:\ WINDOWS \ Microsoft.NET \ Framework64 \ v4.0.30319 \的MSBuild .exe
“C:\用户\ Clark.Kent \文档\ Visual Studio的 2012 \项目\ WpfApplication1 \ WpfApplication1.sln”
在解决方案路径之后添加您需要的任何标志。
按ENTER
注意,你可以得到帮助所有可能的标记像
C:\ WINDOWS \ Microsoft.NET \ Framework64 \ v4.0.30319 \ msbuild.exe/help
DEVENV在许多情况下工作良好,但在WIXPROJ上构建我的WIX安装程序,我所得到的只是“灾难性”错误在Out日志中。
这工作: MSBUILD /Path/PROJECT.WIXPROJ /吨:编译/ P:配置=释放
使用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社区版一样。随着微软的注册要求,该版本几乎没有空闲。免费在Facebook中,如果有什么...
我见过由于MSBuild和DevEnv处理.sln文件的差异,在奇怪的情况下失败。 – 2009-01-31 02:57:17