2009-02-20 71 views
3

在Visual Studio中,我为各种层次(开发,暂存,测试等)提供了自定义MSBuild操作。这些脚本会自动编译所有内容,执行web.config交换,并根据所选配置将代码推送到某个位置。通常,当我想在开发以外的其他版本上运行这些构建时,我会从命令行调用构建脚本。尽管我尽可能努力,但有时我自己(以及在解决方案中工作的其他人)会意外地将配置保留在他们不想要的配置中 - 也许他们将其切换到“分段”配置以查看代码如何用其特定的预处理器指令进行查看。然后他们打开了“F5”,认为他们正在开发中进行调试......并且意外推出破坏的代码。有什么方法可以防止意外构建错误的Visual Studio配置?

所以问题是,有没有办法让构建脚本绑定到配置上,但是不允许IDE的某些配置的构建?或者弹出警告?或者我是否以这种错误的方式开始?

回答

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将不包含额外的属性,因此构建将失败。

+0

+1,我们做了类似的工作,效果很好。 – si618 2009-02-27 02:52:12

相关问题