1

如何获取项目的元数据以覆盖项目定义元数据?

我在我的 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 但视觉工作室给了我: x

4

3 回答 3

0

项目元数据是特定于每个特定项目的东西,而不是整个项目数组您可以将其视为为item array中的每个特定项目分配单独字典

因此,在您首先在 .prop 文件中进行采样时,您试图将特定字典分配给“空”项目数组,然后在 vcxproj 文件中,您只是用自己的元数据定义新项目,并使用它。

您不能为所有“未来”项目定义“默认”元数据。

您可以做的是在 .prop 文件中创建单独的目标,这将为每个已定义的项目添加元数据,并在需要时调用它。

于 2013-04-11T11:40:46.393 回答
0

根据:http: //msdn.microsoft.com/en-us/library/ms171453.aspx#BKMK_Transforming

在“项目定义”下:

从 .NET Framework 3.5 开始,您可以使用 ItemDefinitionGroup 元素将默认元数据添加到任何项目类型。与众所周知的元数据一样,默认元数据与您指定的项目类型的所有项目相关联。您可以显式覆盖项目定义中的默认元数据。

我在做什么不是吗?

于 2013-04-17T02:07:46.383 回答
0

我已经解决了这个问题。而不是将 CommandLineTemplate 放在 .props 文件中,并让 .target 文件引用 %(PNL.CommandLineTemplate)

我只是将命令放在目标文件中:CommandLineTemplate="%(PNL.OutputDirectory)"

于 2013-04-17T03:04:37.187 回答