条件预生成事件命令

Conditional Prebuild Event Commands

背景

目前,我在本地构建解决方案时使用 运行 预构建命令。但是,在我的 VSTS 持续集成服务器上构建时不需要此命令。

问题

有没有办法在本地机器上构建时只运行预构建事件命令?

我知道您可以添加如下条件语句。但是有什么东西可以区分它是本地构建还是 CI 构建?

if $(ConfigurationName) ==  Local 

在 VSTS 中使用 Visual Studio build 任务时,您可以从任务配置中传递 MSBuild 参数。通过这种方式,您可以定义自己的自定义 属性,如 RunsOnCI,并将其默认为 false。然后,您可以在构建定义中将其设置为 true

假设您在预构建事件中有以下代码:

if $(BuiltOnCI) == true (
    echo "Hello World!"
)

然后您需要编辑 .csproj 文件并添加具有默认值的 BuiltOnCI 属性:

<PropertyGroup>
    ...
    <BuiltOnCI>false</BuiltOnCI>
</PropertyGroup>

您可以在命令行上通过 运行 MSBuild 测试您的更改。 运行 这样不会显示 Hello World 消息:

msbuild myproject.csproj

在命令行上传递参数允许您将其设置为 true:

msbuild WhosebugSample.csproj /p:BuiltOnCi=true

现在它可以在本地运行,您可以使用 /p:BuiltOnCi=true 并将您的 VSTS 任务放入 MSBuild 参数字段中。