如何使用msbuild库访问ProjectReference名称

时间:2015-02-22 22:09:33

标签: c# .net msbuild

对于项目参考,MSBuild看起来像这样:

   <ProjectReference Include="..\..\ABC\ABC\ABC.csproj">
      <Name>ABC</Name>
      <Project>{XXXXXXXXX}</Project>
      <Package>{YYYYYYYY}</Package>
    </ProjectReference>

我需要ProjectReference.Name。我使用Microsoft.Build.BuildEngine来提取数据。

  var projectReference =
        from grp in project.ItemGroups.Cast<BuildItemGroup>()
        from item in grp.Cast<BuildItem>()
        where item.Name == "ProjectReference"
        select item;

    foreach (BuildItem item in projectReference)
    {
        References.Add(item.Name);
    }

item.Name给了我ProjectReference。我需要&#34; ABC&#34;。我怎样才能获得这些数据?

1 个答案:

答案 0 :(得分:2)

我在MSDN找到了一个很好的例子。您只需更改for循环以提取元数据:

   foreach (BuildItem item in projectReference)
    {
        var name = item.GetMetadata("Name");
        References.Add(name);
    }

在我看到BuildItem表示XML元素及其属性的情况下:

<element attribute="blah">
  <meta1>hello</meta1>
  <meta2>world</meta2>
</element>

元数据似乎是子数据的累积。