52

如何将在 IDE 中执行的 Visual Studio 构建转换为可以从命令行运行的脚本?

4

11 回答 11

32

使用 VS2008 你可以这样做:

devenv solution.sln /build configuration
于 2008-08-29T06:38:23.303 回答
30
\Windows\Microsoft.NET\Framework\[YOUR .NET VERSION]\msbuild.exe

很多命令行参数,但最简单的就是:

msbuild.exe yoursln.sln
于 2008-08-23T20:46:26.840 回答
4

最简单的方法:导航到包含解决方案或项目文件的目录,然后运行msbuild(假设您有 Visual Studio 2005 或更高版本)。

更灵活的方式:

  • 阅读MSBuild 参考。有大量的自定义,尤其是在您安装了MSBuild 社区任务项目之后。
  • 使用NAnt。它比 MSBuild 存在的时间更长,并且拥有更多的社区支持,但需要您从头开始一个项目文件,而不是扩展现有的 Visual Studio 创建的文件。
于 2008-08-23T20:44:58.030 回答
4

NAntMSBuild是最流行的在.NET中自动构建的工具,您可以在 Stack Overflow 问题Best .NET build tool中找到关于它们各自优缺点的讨论。

于 2008-08-23T20:52:43.517 回答
4

这是我用来通过批处理脚本为同一解决方案完全自动化 x86 和 x64 配置的命令行构建的脚本。

这基于 DevEnv.exe,因为如果您的构建中有安装项目(msbuild 不支持构建安装项目),它就可以工作。

我假设您的设置是 32 位 Windows 7 和 Visual Studio 2010 设置,使用 x86 本机编译器和 x64 交叉编译器。如果您运行的是 64 位 Windows,您可能需要在批处理脚本中将 x86_amd64更改为amd64,具体取决于您的设置。这是假设 Visual Studio 安装在Program Files中并且您的解决方案位于D:\MySoln

创建一个名为buildall.bat的文件并将其添加到其中:

D:
cd "D:\MySoln"

if "%1" == "" goto all
if %1 == x86 goto x86
if %1 == x64 goto x64

:x86
%comspec% /k ""C:\Program Files\Microsoft Visual Studio 10.0\VC\vcvarsall.bat"" x86 < crosscompilex86.bat
goto eof

:x64
%comspec% /k ""C:\Program Files\Microsoft Visual Studio 10.0\VC\vcvarsall.bat"" x86_amd64 < crosscompilex64.bat
goto eof

:all
%comspec% /k ""C:\Program Files\Microsoft Visual Studio 10.0\VC\vcvarsall.bat"" x86 < crosscompilex86.bat
if %ERRORLEVEL% NEQ 0 goto eof
%comspec% /k ""C:\Program Files\Microsoft Visual Studio 10.0\VC\vcvarsall.bat"" x86_amd64 < crosscompilex64.bat
goto eof

:eof
pause

现在再创建 2 个批处理脚本:

crosscompilex86.bat构建 x86 构建的发布版本并包含此

devenv MySoln.sln /clean "Release|x86"
IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
devenv MySoln.sln /rebuild "Release|x86"
IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%

crosscompilex64.bat构建 x64 构建的发布版本并包含此

devenv MySoln.sln /clean "Release|x64"
IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
devenv MySoln.sln /rebuild "Release|x64"
IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%

现在将所有 3 个批处理文件与 MySoln.sln 一起放在您的解决方案文件夹中。您可以通过在桌面上创建运行以下命令的快捷方式来构建 x86 和 x64 发布版本:

  • 全部构建 -> D:\MySoln\buildall.bat
  • 仅构建 x86 版本 -> D:\MySoln\buildall.bat x86
  • 仅构建 x64 版本 -> D:\MySoln\buildall.bat x64

如果您使用的是 AnyCPU 等其他配置,则需要相应地自定义上述脚本。

于 2014-11-18T18:50:04.127 回答
3

查看构建工具NAntMSBuild。我相信 MSBuild 是 Visual Studio 2005 及更高版本的构建工具。然而,我是 NAnt 的粉丝......

于 2008-08-23T20:43:02.620 回答
2

Visual Studio 2005 开始,所有项目文件(至少对于基于 .NET 的项目)都是实际的MSBuild文件,因此您可以在命令行上调用 MSBuild 并将项目文件传递给它。

底线是,如果您想真正控制构建过程,则需要使用“构建脚本语言”,如NAnt或 MSBuild(还有其他的,但这些是目前主流的语言)。

于 2008-08-28T17:09:14.947 回答
2

看看UppercuT。它物超所值,它可以满足您的需求,甚至更多。

UppercuT 使用 NAnt 来构建,它是非常容易使用的构建框架。

自动化构建就像 (1) 解决方案名称,(2) 源代码控制路径,(3) 大多数项目的公司名称一样简单!

http://projectuppercut.org/

这里有一些很好的解释:Uppercut

于 2009-05-16T19:46:05.367 回答
2

这是我使用msbuild进行 VS 2010调试配置的批处理文件:

"C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe" 
iTegra.Web.sln /p:Configuration=Debug /clp:Summary /nologo
于 2013-04-27T04:30:34.847 回答
1

我必须为 Visual Studio 2003中的 C++ 项目执行此操作,所以我不知道这与更高版本的 Visual Studio 有多大关系:

在创建可执行文件的目录中会有一个BuildLog.htm文件。在浏览器中打开该文件,然后打开每个部分,例如:

Creating temporary file "c:\some\path\RSP00003C.rsp" with contents
[
/D "WIN32" /D "_WINDOWS" /D "STRICT" /D "NDEBUG" ..... (lots of other switches)
.\Project.cpp
.\Another.cpp
.\AndAnother.cpp
".\And Yet Another.cpp"
]
Creating command line "cl.exe @c:\some\path\RSP00003C.rsp /nologo"

创建一个 .rsp 文件,其内容在方括号之间(但不包括方括号),然后随意命名。我似乎记得绝对路径存在问题,因此您可能必须确保所有路径都是相对的。

然后在您的构建脚本中添加文件中的命令行,BuildLog.htm但使用您的 .rsp 文件名:

cl.exe @autobuild01.rsp /nologo

(请注意,还有一个 link.exe 部分以及 cl.exe)

于 2008-08-23T21:04:15.970 回答
-1

更简单的方法是更改​​ VS 2015 项目和解决方案配置:转到工具选项卡 -> 选项 -> 项目和解决方案 -> 构建并运行 -> 运行时,当项目过期时(选择始终构建)。瞧!

现在,您的 IDE 将在您运行 (F5) 时自动构建您的项目。希望这会有所帮助,欢迎任何反馈。

于 2017-01-27T12:57:51.273 回答