2011-02-10 198 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

相關問題