api检查项目文件中的项目变量和引用路径

我正在开发一个带有x no的.net application (VS2010) 。 解决方案和变量号。 这些解决方案中的项目。 我需要检查项目属性(特定于一定数量的项目)是否是同质的,并在构建期间检查/validation参考路径。 有没有这样做的API ? 如果没有,我如何建立一个?

您可以使用MSBuild框架进行解析并执行项目文件的评估。 您需要使用的主要类是ProjectCollection和Project 。

但首先你需要处理你的.sln文件。 由于API无法直接加载.sln文件,因此您首先需要将.sln文件转换为API可以加载的项目文件。 这里描述了该方法。 您将在转换后获得.sln.metaproj文件,它们是.sln的等效表示forms,但具有MSBuild格式。 之后,您可以解析.sln.metaproj文件并引用项目并评估所需的属性。 此示例打印出解决方案中所有项目的Debug | AnyCPU配置的OutputPath属性评估:

  Dictionary globalProperties = new Dictionary(); 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); } } }