测试MSBuild属性是否包含子字符串

测试MSBuild属性是否包含子字符串,msbuild,Msbuild,我在MSBuild项目中有一个属性,它是一个以分号分隔的字符串值列表。如何测试列表是否包含特定值 在下面的示例清单中,我只希望在属性$DCC_定义constains'WebDeploy'时执行目标DeployToServer 我在@Condition属性中使用了一些伪逻辑来说明我的意思。我使用的是.NET framework版本2.0.50727.3655;以及3.4.30729.1的MSBuild版本 我怎样才能做到这一点?我没有能力升级到MSBuild 4。好吧,既然你不能使用属性函数,你就

我在MSBuild项目中有一个属性,它是一个以分号分隔的字符串值列表。如何测试列表是否包含特定值

在下面的示例清单中,我只希望在属性$DCC_定义constains'WebDeploy'时执行目标DeployToServer

我在@Condition属性中使用了一些伪逻辑来说明我的意思。我使用的是.NET framework版本2.0.50727.3655;以及3.4.30729.1的MSBuild版本


我怎样才能做到这一点?我没有能力升级到MSBuild 4。

好吧,既然你不能使用属性函数,你就必须有创造性

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <PropertyGroup>
        <DCC_Define>WebDeploy;DEBUG;WebDeploy</DCC_Define>
    </PropertyGroup>

    <Target Name="DeployToServer">
        <CreateItem Include="$(DCC_Define)">
            <Output TaskParameter="Include" ItemName="DCC_Define" />
        </CreateItem>
        <!-- Not required since MSBuild doesn't execute targets twice -->
        <!-- <CreateProperty Value="True" Condition="%(DCC_Define.Identity) == WebDeploy">
            <Output TaskParameter="Value" PropertyName="WebDeploy" />
        </CreateProperty> -->
        <CallTarget Targets="_DeployToServer" Condition="%(DCC_Define.Identity) == WebDeploy" />
    </Target>

    <Target Name="_DeployToServer">
        <Message Text="Do something." />
    </Target>
</Project>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <PropertyGroup>
        <DCC_Define>WebDeploy;DEBUG;WebDeploy</DCC_Define>
    </PropertyGroup>

    <Target Name="DeployToServer">
        <CreateItem Include="$(DCC_Define)">
            <Output TaskParameter="Include" ItemName="DCC_Define" />
        </CreateItem>
        <!-- Not required since MSBuild doesn't execute targets twice -->
        <!-- <CreateProperty Value="True" Condition="%(DCC_Define.Identity) == WebDeploy">
            <Output TaskParameter="Value" PropertyName="WebDeploy" />
        </CreateProperty> -->
        <CallTarget Targets="_DeployToServer" Condition="%(DCC_Define.Identity) == WebDeploy" />
    </Target>

    <Target Name="_DeployToServer">
        <Message Text="Do something." />
    </Target>
</Project>