如何从命令行编译 VisualStudio 项目?

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

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

这个脚本是用 Python 编写的,但是一个允许我调用: os.system 就可以了。

220020 次浏览

MSBuild 是你的朋友。

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

MSBuild 通常可以工作,但是我以前遇到过困难

devenv YourSolution.sln /Build

我知道两种方法。

方法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。要么启动 VisualStudio 构建环境并从那里运行脚本,要么在 Python 中修改路径(使用 Os.putenv)。

老实说,我得加上我的两分钱。

你可以用 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. 运行 命令窗口

  2. 输入 msbuild.exe 的路径

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

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

C: 用户 Clark Kent 文档视觉工作室 2012年项目 WpfApplication1 WpfApplication1.sln”

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

  2. 进入

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

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

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

这种方法是有效的: MSBUILD/Path/PROJECT.WIXPROJ/t: Build/p: Configuration = Release

正如其他人指出的那样,使用 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 Community 版本一样。随着微软注册要求的到位,这个版本很难说是免费的。免费的脸书,如果有的话..。

这里的答案正确地建议 MSBuild 和 DevEnv 作为从命令行构建的方法。我想指出的是,微软是这样说的: “通常,与直接使用 MSBuild 相比,DevENV 更受欢迎,因为您可以让 VisualStudio 处理 MSBuild 的复杂性。”

参考文献

dotnet build似乎是构建解决方案的最新方法。

Https://learn.microsoft.com/en-us/dotnet/core/tools/dotnet-build

对于使用 vs2019构建 x64平台的目标:

清理项目

Devenv * . sln/Clean“ Release | x64”


建造或重建项目

Devenv * . sln/Build“ Release | x64”

Devenv * . sln/重建“ Release | x64”