MSBuildスクリプトファイルがあり、ファイルにインポートされたプロジェクトごとにアクションを実行したいと思います。
参照されているプロジェクトにアクセスするにはどうすればよいですか?
MSBuildスクリプトファイルがあり、ファイルにインポートされたプロジェクトごとにアクションを実行したいと思います。
参照されているプロジェクトにアクセスするにはどうすればよいですか?
各プロジェクトでどのようなアクションを実行したいかは明確ではありません。参照されているプロジェクトのパスを単純に印刷したい場合は、次のサンプルコードを使用します。
Dictionary<string, string> globalProperties = new Dictionary<string, string>();
globalProperties.Add("Configuraion", "Debug");
globalProperties.Add("Platform", "AnyCPU");
ProjectCollection pc = new ProjectCollection(globalProperties);
Project sln = pc.LoadProject(@"MyProject.csproj", "4.0");
foreach (ProjectItem pi in sln.Items)
{
if (pi.ItemType == "ProjectReference")
{
Console.WriteLine(pi.EvaluatedInclude);
}
}
上記のコードは、MSBuildの一部であるMicrosoft.Build.dllのProjectCollectionおよびProjectタイプを使用しています。
理論的には、プロジェクトの参照はビルドパラメータに依存することに注意してください。たとえば、デバッグ構成ではデバッグライブラリを参照できますが、リリースでは参照できません。したがって、ProjectCollectionを初期化するときに、必要なパラメーターを渡す必要があります。