条件预构建事件命令

3

背景

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

问题

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

我知道可以添加像下面这样的条件语句。但是否有区分本地构建和CI构建的方法?

if $(ConfigurationName) ==  Local 
1个回答

4
当在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 StackoverflowSample.csproj /p:BuiltOnCi=true

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

你能否再详细解释一下?我理解逻辑,但不知道在哪里设置所有组件。我已经在我的VSTS中的MSBuild参数中添加了/p:BuiltOnCI=true,并在我的解决方案的预构建事件中设置了此条件:if "$(BuiltOnCI)" != true - Dan Cundy
@DanCundy 我已经上传了一个示例到我的帖子中。可以吗? - Wouter de Kort
做得很好,谢谢。在预构建语法方面有些困难,但最终成功了。 - Dan Cundy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接