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 の「グループ」が 1 つだけではないことがわかります。

于 2012-07-30T12:09:07.623 に答える