我有一个 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);
}
}
上面的代码使用Microsoft.Build.dll 中的ProjectCollection和Project类型,它是 MSBuild 的一部分。
请注意,理论上项目引用取决于构建参数,例如,您可能会引用调试库进行调试配置,而不是发布。因此,在初始化 ProjectCollection 时,您必须传递所需的参数。