2011-02-10 111 views
18

在MsBuild中,是否有可能创建一个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> 

回答

31

存在着用于覆盖性能常用的方法。

从样品C:\ WINDOWS \ Microsoft.NET \框架\ v4.0.30319 \ Microsoft.Common.targets

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

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

+1

不是我想要的答案,但我承认这是正确的,因此有用。 – 2011-02-24 23:07:28

相关问题