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

===============>>#1 票数:30

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

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

msbuild.exe yoursln.sln

===============>>#2 票数:30 已采纳

使用VS2008,您可以这样做:

devenv solution.sln /build configuration

===============>>#3 票数:4

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

更灵活的方式:

  • 阅读MSBuild参考资料 有大量的自定义,特别是一旦安装了MSBuild社区任务项目
  • 使用NAnt 它存在的时间比MSBuild长,并且有更多的社区支持,但要求您从头开始创建项目文件,而不是扩展Visual Studio创建的现有文件。

===============>>#4 票数:4

NAntMSBuild是自动化.NET构建的最流行的工具,你可以在Stack Overflow问题Best .NET构建工具中找到关于每个的优点/缺点的讨论。

===============>>#5 票数:3

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

===============>>#6 票数: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版本的Release版本并包含此内容

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版本的Release版本并包含此内容

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 Release版本:

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

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

===============>>#7 票数:2

这是我使用msbuild for VS 2010 Debug配置的批处理文件:

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

===============>>#8 票数:2

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

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

===============>>#9 票数:2

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

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

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

http://projectuppercut.org/

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

===============>>#10 票数: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)

===============>>#11 票数:-1

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

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

  ask by Sam Hasler translate from so

未解决问题?本站智能推荐:

2回复

免费的Visual Studio构建自动化解决方案

我正在寻找一个用于Visual Studio解决方案空间的构建自动化解决方案,该解决方案空间包含多个混合源类型(主要是Win32 C ++和C#)的项目。 同样,所有代码都存储在Subversion存储库中。 因此,从拉下代码的工作副本到编译源代码,再到构建设置文件,都需要一路走。 要
2回复

将VSIX部署自动化到Visual Studio库

我们希望自动上传我们已编写到Visual Studio库的Visual Studio Extensions。 我们目前使用CruiseControl.Net,Msbuild文件和Powershell脚本的组合来自动部署我们框架的所有部分。 但是,我们希望将我们创建的开发工具的部署自动
1回复

Visual Studio 2013自动化:如何确定是否需要构建解决方案(即自上次构建以来进行了更改)?

如何判断是否需要构建解决方案(即自上次构建以来进行了更改)? 我使用Solution4界面
1回复

.NET项目构建自动化

在Windows下以及该操作系统的功能下进行自动化构建时,我非常环保。 因此,我将解释我在以前的工作中提出Debian场景所要实现的目标。 所以我有2个本地和远程PC。 在本地PC上,我启动了以下脚本: 从源代码管理下载最新版本 做一些构建工作,根据构建参数重命名文件等
3回复

Visual Studio构建统计信息

我对每天花在建设项目上的时间感兴趣。 是否有现有工具提供此类统计数据? 谢谢!
3回复

自动发布脚本和Visual Studio安装项目

我想这里的大多数人都了解全自动构建的重要性。 问题是我们的项目之一现在正在使用集成的Visual Studio安装项目(vdproj),并且最近被移植到Visual Studio 2008.不幸的是,那些不会在MSBuild中构建并且在2008年调用devenv.exe / build只是
2回复

我们如何在Visual Studio构建过程中显示“步骤”?

从Visual Studio(2008或2005)监视TFS构建时,您可以看到它的位置。 问题是我有一些Post-Build自定义步骤,我希望开发人员能够直接通过UI查看。 这些步骤需要一些时间,我们也可以获得构建步骤的“时间”。 知道如何显示它吗?
3回复

在构建时运行Visual Studio自定义工具

我有一个脚本将文本文件转换为资源文件,这样我可以通过将不同语言的文本文件转换为不同的资源来支持多种语言。 一旦我运行脚本获取resx文件,我就必须运行自定义构建工具(如此处所述: 链接到代码项目 ),以便创建Designer.cs文件以使用新文件。 按照我应该能够通过单击按钮构建整个项目
2回复

Visual Studio - 在生成后自动运行外接程序

我有一个ac #add-in,我希望在用户构建解决方案后自动运行。 有可能实现这个吗? 到目前为止,在线查看后,我发现: http://msdn.microsoft.com/en-us/library/envdte.buildeventsclass.onbuilddone.as
2回复

Visual Studio Build的不同行为取决于是内置在IDE中还是从命令行构建?

是否可以控制构建事件批处理文件的行为,具体取决于是从IDE还是命令行运行构建。 我们有几种版本的产品。 它包含需要注册的COM对象。 该COM注册由从相应项目中的自定义生成步骤调用的批处理文件完成。 问题是,如果开发人员在IDE中处理另一个版本时,在后台从命令行运行一个版本的自动