1

我正在.net application (VS2010)使用 x no。解决方案和变量编号。这些解决方案中的项目。我需要检查项目属性(特定于一定数量的项目)是否同质,并在构建期间检查/验证参考路径。是否有执行此操作的API?如果没有,我该如何建造一个?

4

1 回答 1

3

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

但首先你需要处理你的 .sln 文件。由于 API 无法直接加载 .sln 文件,因此您需要先将 .sln 文件转换为项目文件,以便 API 可以加载。该方法在此处描述。转换后您将获得一个 .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);
            }
        }
    }
于 2012-08-03T23:58:52.703 回答