繁体   English   中英

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

[英]api to check for project variables and reference paths in a project file

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

您可以使用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);
            }
        }
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM