【问题标题】:msbuild, overwriting property value in different filemsbuild,覆盖不同文件中的属性值
【发布时间】:2013-02-06 21:58:08
【问题描述】:

我正在尝试根据另一个文件中的特定条件修改属性值。 例如。 我有一个调用目标文件的文件。

<Import Project="sample.vcxproj"/>
<PropertyGroup>
    <Gender>Boy</Gender>
    <Search>UNIQUE_NAME</Search>
</PropertyGroup>

<Target Name="Build">
    <callTarget Targets="SetName"/>
    <Message Text="$(Person)"/>
</Target>

我有一个文件,其中包含要决定的项目组和修改的目标

<ItemGroup>
    <Name Include="UNIQUE_NAME">
        <Boy>DAVID</Boy>
        <Girl>REBECCA</Girl>
    </NAME>
</ItemGroup>

<Target Name="SetName">
    <PropertyGroup Condition="'$(Search)'=='@(Name)'">
        <Person>@(Name->'%($(Gender))')</Person>
    </PropertyGroup>
</target>

但是当我打印“Person”时,我得到了空字符串。我检查了是否调用了“SetName”并设置了正确的名称。 我在这里错过了什么?

【问题讨论】:

    标签: msbuild msbuild-propertygroup msbuild-target


    【解决方案1】:

    这与 MSBuild 属性的可访问性有关,具体取决于您使用的是 DependsOnTargets 还是 CallTarget。使用 DependsOnTargets 时,您将拥有更多的属性访问权限。这就是为什么您的示例在使用该方法时有效的原因。

    有一个现有的stackoverflow article 可以解决这个问题。

    【讨论】:

      【解决方案2】:

      使用 'DependsOnTarget' 属性而不是 callTarget 任务可以正常工作

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-08-16
        • 2021-06-22
        • 1970-01-01
        • 2018-08-31
        • 2016-05-15
        • 2011-09-10
        相关资源
        最近更新 更多