25

在 MsBuild 中,是否可以创建一个 MSBuild 条件(或其他情况)来评估属性是否已“定义”(假设这是在某处为属性分配值之前)?

以下内容似乎有点笨拙而不可靠:

<PropertyGroup Label="Undefined State">
     <Defined></Defined>
</PropertyGroup>

<Choose>
   <When Condition="('$(Defined)' == '' OR '$(Defined)' != '')">
        <Message Text="Defined is probably/likely/assuredly defined"/>
    </When>
    <Otherwise>
       <Message Text="Defined is reportedly/maybe/possibly not defined"/>
    </Otherwise>
<Choose>
4

1 回答 1

47

存在用于覆盖属性的通用方法。

来自C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets的示例

   <PropertyGroup>
       <TargetFrameworkIdentifier Condition="'$(TargetFrameworkIdentifier)' == ''">.NETFramework</TargetFrameworkIdentifier>
       <TargetFrameworkVersion Condition=" '$(TargetFrameworkVersion)' == '' ">v4.0</TargetFrameworkVersion>
   </PropertyGroup>

如果您尝试从$(NeverDefinedProperty)获取价值,您只会得到一个空字符串。你能描述一下你想解决的问题吗?

于 2011-02-10T09:34:05.537 回答