获取列出csproj文件的引用的路径

时间:2012-08-27 17:25:11

标签: c# .net xml linq msbuild

我知道csproj文件的路径(在100个其他项目文件中)。 我想检查“bin”中存在哪些引用,以便将这些引用的“copy local”值设置为false。为此,我需要获取引用的路径(或者有更好的方法??)。 如何获取csproj文件中列出的引用的路径?

提前致谢!!

1 个答案:

答案 0 :(得分:1)

请尝试以下操作:

var project = ProjectRootElement.Open(fileName);
var referenceElements = project.Items
    .Where(x => x.ItemType.Equals("Reference"))
    .Where(x => x.HasMetadata && x.Metadata.Any(m => m.Name.Equals("HintPath") && CheckLocation(m.Value)));

    foreach (var projectItemElement in referenceElements) 
    {
        var copyLocalElement = projectItemElement.Metadata.FirstOrDefault(x => x.Name.Equals("CopyLocal"));
        if (copyLocalElement != null) 
        {
            copyLocalElement.Value = "false";
            continue;
        }
        projectItemElement.AddMetadata("CopyLocal", "false");
    }

根据需要实施CheckLocation方法。我没有对此进行全面测试,但我希望它能以正确的方式进行测试。