我正在使用x号.net application (VS2010)
。解决方案和变量号。这些解决方案中的项目。
我需要检查项目属性(特定于一定数量的项目)是否是同质的,并且还要在构建期间检查/验证引用路径。
是否有 API 这样做?如果没有,我该如何建立一个?
答案 0 :(得分:3)
您可以使用MSBuild框架进行解析并执行项目文件的评估。您需要使用的主要课程是ProjectCollection和Project。
但首先你需要处理你的.sln文件。由于API无法直接加载.sln文件,因此您首先需要将.sln文件转换为API可以加载的项目文件。该方法描述为here。您将在转换后获得.sln.metaproj文件,它们是.sln的等效表示形式,但具有MSBuild格式。之后,您可以解析.sln.metaproj文件并引用项目并评估所需的属性。此示例打印出解决方案中所有项目的Debug | AnyCPU配置的OutputPath属性评估:
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(@"my_directory\My_solution_name.sln.metaproj", "4.0");
foreach (ProjectItem pi in sln.Items)
{
if (pi.ItemType == "ProjectReference")
{
Project p = pc.LoadProject(pi.EvaluatedInclude);
ProjectProperty pp = p.GetProperty("OutputPath");
if (pp != null)
{
Console.WriteLine("Project=" + pi.EvaluatedInclude + " OutputPath=" + pp.EvaluatedValue);
}
}
}