如何从命令行传递 msbuild 条件?

问题描述 投票:0回答:2

我有一个目标作为我的构建的一部分,我希望在评估某些命令行检查时跳过它:

<Target Name="RunSomeDependencyVerification" Condition="!Exists('$(SkipVerification)')">
....

我想从控制台传递跳过验证,以便:

msbuild mybuild.dev.proj /p:SkipVerification

我的构建脚本抱怨“SkipVerification”属性未定义。我找到了

<PropertyGroup />
的文档,但似乎不仅定义了属性,还设置了值,这不是我想要的。

我错过了什么?

msbuild command-line-arguments conditional-statements
2个回答
3
投票

在原始 msbuild 文件中使用默认值定义属性。

<PropertyGroup>
    <SkipVerification Condition="'$(SkipVerification)'==''">False</SkipVerification>
</PropertyGroup>

我认为您对“Exists”检查的使用已关闭..(又名,好听的说:对于您想要做的事情来说,这是错误的语法糖。) 我想您想检查一下您的财产的价值。如下所示:(没有使用“存在”:))

<Target Name="RunSomeDependencyVerification" Condition="'$(SkipVerification)'=='True'">

然后这个。

/p:Configuration=Debug;SkipVerification=True

请注意:

配置=调试;是不是您需要的一部分,我只是想展示如何在命令行中指定多个属性。 (您使用“;”分隔符)


0
投票

Msbuild 说

SkipVerification
未定义,因为它不是:
Exists
适用于文件或目录,而不适用于属性。试试这个:

msbuild mybuild.dev.proj /p:SkipVerification=true

然后检查值:

<Target Name="RunSomeDependencyVerification"
        Condition="'$(SkipVerification)'!='true')">
© www.soinside.com 2019 - 2024. All rights reserved.