我们正在寻找的是:在编译相同的配置时,比如Release | Win32,有时候只能进行后置步骤。就像,如果我在开发机器上执行所有后期构建步骤,或者如果我在构建服务器上,则不要执行它们。或者,实现这一目标的唯一方法是实施新配置吗?
评论者:感谢您的想法,我们不想使用脚本,因为它们将是一个需要维护的东西,并且在这一点上转向MSBuild proj文件也会非常令人头痛。谢谢你的尝试。答案 0 :(得分:15)
您可以在后期构建脚本中使用环境变量。像这样:
if NOT %ComputerName% == DEVMACHINENAME GOTO end
c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\ngen "$(TargetPath)"
:end
答案 1 :(得分:1)
如果您想破解MSBuild本身(。* proj文件本质上只是MSBuild脚本),您可以在构建后运行特定于机器的步骤:http://flimflan.com/blog/MachineSpecificTasksWithMSBuild.aspx
“这利用了以下事实:所有环境变量都可以立即作为MSBuild脚本中的属性使用;并且所有Windows机器(我最近工作过)都设置了COMPUTERNAME环境变量。”
答案 2 :(得分:0)
如果您不喜欢单独的构建配置(我认为最有意义),您可以在构建服务器上定义一个环境变量,然后可以在构建后的脚本中测试它。
答案 3 :(得分:0)
是否可以将后期构建步骤实现为始终执行的外部脚本,但是是否具有有条件地执行所需步骤的逻辑?