在c#msbuild任务中检索同名的多个项元数据
如何在c#msbuild任务中获取具有相同名称的多个项元数据,例如,如果我有:在c#msbuild任务中检索同名的多个项元数据,c#,msbuild,msbuild-task,C#,Msbuild,Msbuild Task,如何在c#msbuild任务中获取具有相同名称的多个项元数据,例如,如果我有: <ItemGroup> <Assemblies Include = "S:\SVN\SomeDirectory\src\"> <excludeAssembly>AssemblyName_1</excludeAssembly> <excludeAssembly>AssemblyName_2</excludeAssemb
<ItemGroup>
<Assemblies Include = "S:\SVN\SomeDirectory\src\">
<excludeAssembly>AssemblyName_1</excludeAssembly>
<excludeAssembly>AssemblyName_2</excludeAssembly>
<excludeAssembly>AssemblyName_3</excludeAssembly>
<excludeAssembly>AssemblyName_4</excludeAssembly>
</Assemblies>
</ItemGroup>
获取单个元数据值。我需要获得
值列表元数据与项不同,一个项可以有不同的元数据,但一个元数据只能有一个值
使用Microsoft.Build.Engine程序集(BuildItem.EvaluateAllItemMetadata(…)上的Reflector,可以看到项目的元数据存储在字典中,因此对于给定的元数据名称,只能有一个值
在您的情况下,一个解决方法是使用元数据作为项的名称,如下所示:
<ItemGroup>
<Assemblies Include = "S:\SVN\SomeDirectory\src\">
<excludeAssembly>exludeAssemblySet</excludeAssembly>
</Assemblies>
</ItemGroup>
<ItemGroup>
<exludeAssemblySet Include="AssemblyName_1"/>
<exludeAssemblySet Include="AssemblyName_2"/>
<exludeAssemblySet Include="AssemblyName_3"/>
<exludeAssemblySet Include="AssemblyName_4"/>
</ItemGroup>
// Approximative syntax, I don't know what you want to do
var itemData = itemTask.GetMetadata("excludeAssembly");
BuildItemGroup excludeAssemblies = project.GetEvaluatedItemsByName(itemData);
排除故障
//近似语法,我不知道你想做什么
var itemData=itemTask.GetMetadata(“excludeAssembly”);
BuildItemGroup ExcludeAssemblys=project.GetEvaluatedItemsByName(itemData);
<ItemGroup>
<Assemblies Include = "S:\SVN\SomeDirectory\src\">
<excludeAssembly>exludeAssemblySet</excludeAssembly>
</Assemblies>
</ItemGroup>
<ItemGroup>
<exludeAssemblySet Include="AssemblyName_1"/>
<exludeAssemblySet Include="AssemblyName_2"/>
<exludeAssemblySet Include="AssemblyName_3"/>
<exludeAssemblySet Include="AssemblyName_4"/>
</ItemGroup>
// Approximative syntax, I don't know what you want to do
var itemData = itemTask.GetMetadata("excludeAssembly");
BuildItemGroup excludeAssemblies = project.GetEvaluatedItemsByName(itemData);