将MSBuild集成到Visual Studio中

22

我是一名独立开发者,使用Visual Studio 2008,并正在研究MSBuild以改进我的构建过程。

到目前为止,我找到的大多数教程都提供了编写构建文件的丰富信息。但我有很多困难找到如何将MSBuild集成到Visual Studio中。也许MSBuild仅与像CruiseControl这样的东西一起使用,但对于一个单独的开发者来说,这太过复杂了。

在Visual Studio项目中,构建文件应该放在哪里?我如何在IDE内运行它?

10个回答

20

Visual Studio会自动执行支持的项目的MSBuild。

如果您右键单击一个项目并卸载它,那么您可以在Visual Studio中编辑它。重新加载(再次右键单击项目),强制进行(重新)构建以测试更改。另一种方法是在外部编辑器中编辑项目文件,Visual Studio会检测保存并提供重新加载该项目的选项。

听起来您走在正确的轨道上,如果您考虑编写目标或自定义MSBuild任务,请花时间将它们与当前项目分离,以便您可以重复使用它们。不要重复发明轮子,两个主要的互补MSBuild项目是MSBuild Community TasksMSBuild Extension Pack

更新:根据您对Mitch答案的评论,您可能还想考虑向项目添加新的Configuration元素或自定义属性。新的MSBuild Configuration(不同于默认的Debug / Release)可以运行单元测试,构建文档或任何您想要自动化的内容。自定义MSBuild属性将允许您使用正常的Debug / Release Configuration,并扩展其功能以自动化更多的构建过程,这取决于您想要什么。任何一种方法也可以从命令行驱动。


5

正如其他人所指出的那样,当你安装Visual Studio时,MSBuild已经可用。

如果你想集成到VS2008中:从Visual Studio运行MSBuild


1
我想右键单击构建文件并选择“构建”。这已经接近了。 - Alex Angas

2

MSBuild是Visual Studio使用的构建引擎,用于处理项目中包含的文件。
实际上,Visual Studio项目文件本身(例如C#的**.csproj*和VB的.vbproj)就是运行每次构建项目时运行的MSBuild脚本。


1
你的.csproj文件是一个MSBuild文件。所以你实际上已经在使用它了。
当然,你可能希望创建一个单独的构建文件以获得更多的控制,特别是在持续集成或夜间构建中。
如果你只想编辑你的项目构建文件,那么你可以使用IDE来编辑一些设置,比如前置和后置构建操作,或者通过卸载项目、右键点击和编辑来直接编辑Xml本身。

如果我不使用CI或夜间构建,想要一个单独的构建文件是不是有点过头了?构建有点复杂而已。 - Alex Angas
@Alex,你完全没有过度。最大的成本是学习曲线,听起来你已经在这条路上了,所以我认为值得投入学习去使用单独的构建文件。看看构建扩展甚至是Attrice构建软件,如果你有能力支付的话,它可能会对你有所帮助。 - dove

1

您可以使用当前的.vcproj文件使用MSBuild构建项目。然而,由于MSBuild没有直接支持(至少对于vc ++),因此内部使用vcbuild代替。

在VS2010中,所有项目文件都是基于MSBuild的...


1

1
此外,不要忘记您可以使用 MSBuild SideKick 来开发和调试您的(本地)msbuilds。该工具可免费下载,下载链接为http://www.attrice.info/msbuild/

0
我建议您在构建后调用msbuild。然后,您可以将构建脚本放在解决方案的某个位置并调用它。
<windowsdir>\Microsoft.NET\Framework\v3.5\MSBuild.exe c:\temp\MyProject\mybuildfile.proj

呃,BeforeBuild或AfterBuild目标是更好的钩子。 - si618
@Si:在@Mike Two提供的链接中,BeforeBuild和AfterBuild目标据说是为了支持旧版本?http://blogs.msdn.com/msbuild/archive/2005/11/23/496396.aspx - Alex Angas
@Gerrie: 这难道不意味着我要建造两次吗? - Alex Angas
BeforeBuild和AfterBuild不是用于遗留支持的,那篇文章是错误的。(是的,我知道它在MSBuild博客上,但请相信我。) - Sayed Ibrahim Hashimi

0

最简单的方法可能是使用 post-build 步骤来调用您的自定义构建脚本。右键单击项目,选择“生成事件”,然后从那里使用您的自定义 msbuild 文件调用 msbuild。


但是这样我不是要建立两次吗?(一次在VS中,一次在MSBuild中?) - Alex Angas

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接