代码之家  ›  专栏  ›  技术社区  ›  Alex

有没有一种方法可以有条件地运行Visual Studio生成后步骤

  •  6
  • Alex  · 技术社区  · 17 年前

    我们正在寻找的是:在编译相同的配置时,比如Release |Win32,有时是否有一种方法只执行构建后的步骤。例如,如果我在开发机器上执行所有构建后步骤,或者如果我在构建服务器上,则不要执行这些步骤。或者,实现这一点的唯一方法是实现新的配置吗?

    评论者:感谢您的想法,我们不想使用脚本,因为它们将是另一件需要维护的事情,而且此时访问MSBuild proj文件也会很头疼。不过,谢谢你的尝试。

    4 回复  |  直到 17 年前
        1
  •  16
  •   Lurker Indeed    17 年前

    您可以在构建后脚本中使用环境变量。大致如下:

    if NOT %ComputerName% == DEVMACHINENAME GOTO end
    c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\ngen "$(TargetPath)"
    :end
    
        2
  •  1
  •   Chris    17 年前

    如果你想破解MSBuild本身(.*proj文件本质上只是MSBuild脚本),你可以在构建后运行特定于机器的步骤: http://flimflan.com/blog/MachineSpecificTasksWithMSBuild.aspx

    “这利用了这样一个事实,即所有环境变量都可以立即作为MSBuild脚本中的属性使用;并且所有Windows计算机(我最近处理过)都设置了COMPUTERNAME环境变量。”

        3
  •  0
  •   Peter M    17 年前

    是否有可能将构建后的步骤实现为始终执行的外部脚本,但具有有条件执行所需步骤的逻辑?

        4
  •  0
  •   Dirk Vollmar    13 年前

    如果你不想有一个单独的构建配置(我认为这是最有意义的),你可以在构建服务器上定义一个环境变量,然后在构建后脚本中进行测试。