0

为了修改 mvc 项目的 csproject 文件,我使用了如下代码片段,但未能实现。请你帮助我好吗?

 var newReference = @"System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL";

var profiles = Directory.GetFiles(path, "*.csproj", SearchOption.AllDirectories);

        foreach (var profile in profiles)
        {
            var doc = XDocument.Load(profile);
            var parentElement = doc.Descendants("ItemGroup").FirstOrDefault();
            if (parentElement != null)
            {
                var newNode = new XElement("Reference", new XAttribute("Include", newReference));
                parentElement.Add(newNode);
            }
            doc.Save(profile);
        }         
4

1 回答 1

1

“天真的”答案是您必须包含 xml 的命名空间

var newReference = @"System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL";

var profiles = Directory.GetFiles(path, "*.csproj", SearchOption.AllDirectories);
var ns = XNamespace.Get("http://schemas.microsoft.com/developer/msbuild/2003");

foreach (var profile in profiles)
{
    var doc = XDocument.Load(profile);
    var parentElement = doc.Descendants(ns + "ItemGroup").FirstOrDefault();
    if (parentElement != null)
    {
        var newNode = new XElement("Reference", new XAttribute("Include", newReference));
        parentElement.Add(newNode);
    }
    doc.Save(profile);
}    

这将完成您尝试实现的目标(在第一个 ItemGroup 元素中添加新引用),但是如果您查看 csproj 文件,您会发现不仅有一个 ItemGroup “组”!

于 2012-07-30T12:09:07.623 回答