如何自动化Visual Studio构建?

时间:2008-08-23 20:42:26

标签: visual-studio build-automation

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

11 个答案:

答案 0 :(得分:30)

\Windows\Microsoft.NET\Framework\[YOUR .NET VERSION]\msbuild.exe

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

msbuild.exe yoursln.sln

答案 1 :(得分:30)

使用VS2008,您可以这样做:

devenv solution.sln /build configuration

答案 2 :(得分:4)

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

更灵活的方式:

  • 阅读the MSBuild reference。有很多 定制,特别是一次 你安装了MSBuild Community Tasks Project
  • 使用NAnt。它已经存在 比MSBuild更长,并且有更多 社区支持,但需要你 从中启动项目文件 划伤,而不是延伸 现有的,由Visual Studio创建的。

答案 3 :(得分:4)

NAnt MSBuild 是在[{3}}中自动构建内容的最受欢迎的工具,您可以找到讨论在Stack Overflow问题 .NET 中各自的优点/缺点。

答案 4 :(得分:3)

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

答案 5 :(得分:3)

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

这是基于DevEnv.exe,因为它在您的构建中有一个安装项目(msbuild不支持构建安装项目)时可以工作。

我假设您的设置是32位Windows 7,使用x86本机编译器和x64交叉编译器进行Visual Studio 2010安装。 如果您运行的是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版本:

  • 全部构建 - &gt; d:\ MySoln \ buildall.bat
  • 仅构建x86版本 - &gt; D:\ MySoln \ buildall.bat x86
  • 仅构建x64版本 - &gt; D:\ MySoln \ buildall.bat x64

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

答案 6 :(得分:2)

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

最重要的是,你需要使用“构建脚本语言”,如NAnt或MSBuild(还有其他语言,但现在这些是主流的),如果你想对你有任何真正的控制权建立过程。

答案 7 :(得分:2)

看看UppercuT。它有很大的优势,它可以满足您的需求,而且可以满足您的需求。

UppercuT使用NAnt构建,它是一个非常容易使用的Build Framework。

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

http://projectuppercut.org/

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

答案 8 :(得分:2)

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

"C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe" 
iTegra.Web.sln /p:Configuration=Debug /clp:Summary /nologo

答案 9 :(得分: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)

答案 10 :(得分:-1)

更简单的方法是改变VS 2015 Projects&amp;解决方案配置 转到“工具”标签 - &gt;选项 - &gt;项目和解决方案 - &gt;构建和运行 - &gt;在运行时,项目已过期(选择始终构建)。瞧!

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