代码之家  ›  专栏  ›  技术社区  ›  Renato Campos

加载正在写入独立代码分析器的解决方案

  •  2
  • Renato Campos  · 技术社区  · 9 年前

    这是我的代码:

    using Microsoft.CodeAnalysis;
    using Microsoft.CodeAnalysis.CSharp.Syntax;
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Threading.Tasks;
    
    public static class Main
    {
    
        public static Solution solution { get; set; } = null;
    
        public static string GetMethodInfo(string methodToFind)
        {
    
            Task<Solution> GetSolutionTask = null;
            string namespaceToFind, classToFind, methodToFind, invocationToFind;
            if (solution == null)
            {
                var workspace = Microsoft.CodeAnalysis.MSBuild.MSBuildWorkspace.Create();
                GetSolutionTask = workspace.OpenSolutionAsync(Config.SolutionPath);
            }
            if (GetSolutionTask != null) solution = GetSolutionTask.Result;
            foreach (Project proj in solution.Projects)
            {
                Compilation compilation = proj.GetCompilationAsync().Result;
                foreach (var tree in compilation.SyntaxTrees)
                {
                    findMethodAndProcessIt()...
                }
            }
            return String.Empty;
        }
    }
    

    1 回复  |  直到 9 年前
        1
  •  0
  •   Matt Warren    9 年前

    您正在使用MSBuildWorkspace打开解决方案。通常,当使用MSBuildWorkspace导致项目未正确加载、没有源文件等时,msbuild处理过程中会出现故障。当应用程序在其应用程序中没有相同的绑定重定向时,通常会发生这种情况。msbuild使用的配置文件(在msbuild.exe.config中),由于版本不匹配,导致某些自定义任务/扩展无法加载。

    推荐文章