当前位置:  开发笔记 > 运维 > 正文

除编译外,MSBuild脚本应该包含哪些内容?

如何解决《除编译外,MSBuild脚本应该包含哪些内容?》经验,为你挑选了1个好方法。

我目前正在尝试设置CruiseControl.net,所以我想知道如何拆分我的任务.

通常,我想运行单元测试(xUnit.net),帮助文件生成(Sandcastle)和FxCop.

现在我只是想知道我是否应该在msbuild配置("文档")中指定一个新目标并使用它来运行SandCastle,或者如果它属于一个单独的脚本?此外,msbuild用于构建某些东西,所以我猜ncover,xunit和FxCop不应该是它的一部分,或者它们应该是什么?

msbuild的预期范围是什么?



1> oefe..:

将几乎所有内容都放入MSBuild脚本中,以便您和其他开发人员可以通过命令行在本地运行相同的步骤.否则,当构建出现问题时,您必须在CC服务器上进行调试.不是一个很好的调试经验.此外,您希望提交之前在本地运行构建以确保它正常工作.

我不会在MSBuild脚本中添加的一些内容是:

SVN更新,因为CC无论如何都必须执行此操作,并且您通常不希望在执行本地构建时更新.(好吧,我svn up && msbuild相当频繁,但这是如此短暂,我并不需要把它变成脚本.)

创建和发布构建报告; 再次这是CC的域名,在本地没用

至于构建MSBuild文件,您将需要一个"主"构建脚本,您可以使用它来构建所有内容仅构建一些目标,例如

MSBuild /t:Build 只是逐步构建代码

MSBuild /t:Rebuild 进行干净的重建

MSBuild /t:UnitTest 只运行单元测试

MSBuild 最常见的选择,比方说,相当于 t:Build;UnitTest

MSBuild /t:All 干净地构建代码,文档和设置,运行所有测试,并打包结果

您还可以为常用变体添加"快捷方式"目标.

拥有一个主构建文件并不意味着在这个单个文件中定义了所有内容; 您可以包含其他msbuild文件,和/或递归调用msbuild来组织您的构建.例如:

master .proj文件应该相对简单; 主要是,它应该定义项目特定的东西,如构建解决方案列表和项目特定的覆盖

让主文件包含一个包含目标和默认属性的.targets文件; 努力保持这个项目中立和可重复使用.

如果.targets文件变得太大,请将其拆分为单独的文件,例如一个用于代码,一个用于帮助和文档,一个用于设置和打包.让你的主.targets文件包含那些子文件,这样你的.proj文件仍然只需要包含一个文件

同样,如果需要,您可以拆分主.proj文件,例如通过子系统.

推荐阅读
wurtjq
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有