如何获取项目的元数据以覆盖项目定义元数据?
我的vcxproj中包含:
<ItemGroup>
<PNL Include="some file">
<OutputDirectory>y</OutputDirectory>
</PNL>
</ItemGroup>
然后我有一个.props文件:
<PNL>
<OutputDirectory>x</OutputDirectory>
<CommandLineTemplate>%(OutputDirectory)</CommandLineTemplate>
</PNL>
和.target文件:
<PNL>
OutputDirectory="%(PNL.OutputDirectory)"
Outputs="%(PNL.Outputs)"
CommandLineTemplate="%(PNL.CommandLineTemplate)"
</PNL>
所以我希望Items元数据覆盖.props文件中的元数据 命令行等于:y 但是visual studio给了我:x
答案 0 :(得分:0)
项目元数据是针对每个特定项目的内容,而不是针对整个项目数组。您可以将其视为为项目数组中的每个特定项分配的单独字典。
因此,在您首先在.prop文件中进行示例,您尝试将特定字典分配给“空”项目数组,然后在vcxproj文件中,您只是使用自己的元数据定义新项目,并使用它。
您无法为所有“未来”项目定义“默认”元数据。
您可以在.prop文件中创建单独的目标,该目标将为每个已定义的项添加元数据,并在您需要时调用它。
答案 1 :(得分:0)
根据: http://msdn.microsoft.com/en-us/library/ms171453.aspx#BKMK_Transforming
在“项目定义”下:
从.NET Framework 3.5开始,您可以使用ItemDefinitionGroup元素将默认元数据添加到任何项类型。与众所周知的元数据一样,默认元数据与您指定的项类型的所有项相关联。您可以显式覆盖项目定义中的默认元数据。
我正在做的是不是吗?
答案 2 :(得分:0)
我已经解决了这个问题。而不是将CommandLineTemplate放在.props文件中,并使.target文件引用%(PNL.CommandLineTemplate)
我只是将命令放在目标文件中: CommandLineTemplate = “%(PNL.OutputDirectory)”