条件预构建事件命令

Dan*_*ndy 4 continuous-integration pre-build-event azure-devops visual-studio-2017

背景

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

问题

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

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

if $(ConfigurationName) ==  Local 
Run Code Online (Sandbox Code Playgroud)

Wou*_*ort 5

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

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

if $(BuiltOnCI) == true (
    echo "Hello World!"
)
Run Code Online (Sandbox Code Playgroud)

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

<PropertyGroup>
    ...
    <BuiltOnCI>false</BuiltOnCI>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)

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

msbuild myproject.csproj
Run Code Online (Sandbox Code Playgroud)

在命令行上传递参数可以将其设置为 true:

msbuild StackoverflowSample.csproj /p:BuiltOnCi=true
Run Code Online (Sandbox Code Playgroud)

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