1

私はcsprojファイルのパスを知っています(他の何百ものプロジェクトファイルの中で)。「bin」にどの参照が存在するかを確認して、それらの参照の「copylocal」値がfalseに設定されるようにします。このために、私は参照のパスを取得する必要があります(またはより良い方法がありますか??)。csprojファイルにリストされている参照のパスを取得するにはどうすればよいですか?

前もって感謝します!!

4

1 に答える 1

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 メソッドを実装します。これを完全にテストしているわけではありませんが、正しい方法で表示されることを願っています。

于 2012-08-28T06:10:20.360 に答える