在Visual Studio中,我为各种层提供了自定义MSBuild操作 - 开发,登台,测试等。这些脚本将自动编译所有内容,执行web.config交换,并根据所选配置将代码推送到某个位置。通常,当我想在开发之外的其他东西上运行其中一个构建时,我从命令行调用构建脚本。
虽然我尽量保持勤奋,但有时候我(以及其他在解决方案中工作的人)会意外地将配置留在他们不想要的地方 - 也许他们将其切换到“临时”配置来查看如何代码以其特定的预处理程序指令查找。然后他们点击“F5”,认为他们正在开发中进行调试......并意外地推出了破坏的代码。
所以问题是,是否还有一种方法可以将构建脚本与配置相关联,但是不允许从IDE构建某些配置?还是弹出警告?或者我是以错误的方式开始这个?
答案 0 :(得分:3)
要让分段构建失败,除非它是团队构建,您应该能够使用
<Error
Text="No Staging builds except on the Team Build server"
Condition=" '$(IsDesktopBuild)'=='true' And $(Configuration)='Staging' " />
CruiseControl.NET还将不同的属性传递给msbuild,因此类似的想法可以替代IsDesktopBuild中的一个。
我不知道Visual Studio构建和命令行msbuild之间的默认属性有任何差异,但是如果你可以承受一些额外的输入,这应该可以完成这项工作
<Error
Text="You didn't say the magic word"
Condition=" '$(MagicWord)'!='please' And $(Configuration)='Staging' " />
然后
msbuild /p:Configuration=Staging /p:MagicWord=please
Visual Studio将不包含额外属性,因此构建将失败。
答案 1 :(得分:0)
Task Class用于在MSBuild编译过程中添加更多控件。