Roslyn не обнаруживает ссылки в asp.net приложение

#c# #.net-core #roslyn

#c# #.net-ядро #рослин #roslyn

Вопрос:

Я использую roslyn в проекте .NET Core 3.1, и он анализирует ASP.NET решение. The ASP.NET решением является вызов функции MyTestMethod, которая находится в проекте, на который ссылается .Net FW 4.6.2. При выполнении следующего кода для функции он не возвращает местоположение ссылки в ASP.NET решение. Однако, если я вызываю ту же функцию, например, в тестовом проекте, местоположение успешно обнаружено.

 var symbol = semanticModel.GetDeclaredSymbol(node);
var references = SymbolFinder.FindReferencesAsync(symbol, solution).Resu<
  

Может ли эта проблема быть связана с использованием .net core с Roslyn?
Есть предложения, как я мог бы протестировать это дальше, чтобы сузить причину проблемы?

На случай, если это имеет значение, я также использую Buildalyzer.Рабочие области в проекте Roslyn.

[ОБНОВЛЕНИЕ] Я получаю следующие ошибки на основе диагностики, но я не уверен, влияет ли это на синтаксический анализ ссылок, потому что я получаю эту ошибку также для ссылки в тестовом проекте, который работает.

 C:rootMySolutionMyBllRefProjectBll.cs(7,14): error CS0234: The type or namespace name 'MyNamespace' does not exist in the namespace 'MyAssembly' (are you missing an assembly reference?)

C:rootMySolutionMyBllRefProjectOtherLogic.cs(629,32): error CS0012: The type 'Object' is defined in an assembly that is not referenced. You must add a reference to assembly 'mscorlib, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e, Retargetable=Yes'.

C:rootMySolutionMyBllRefProjectOtherLogic.cs(629,25): error CS0012: The type 'Action<>' is defined in an assembly that is not referenced. You must add a reference to assembly 'mscorlib, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e, Retargetable=Yes'.

C:rootMySolutionMyBllRefProjectConfigAutoMapperBootstrap.cs(17,20): error CS0012: The type 'Object' is defined in an assembly that is not referenced. You must add a reference to assembly 'mscorlib, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e, Retargetable=Yes'.

C:rootMySolutionMyBllRefProjectDAL.cs(265,29): error CS0103: The name 'SQLHelper' does not exist in the current context

C:rootMySolutionMyBllRefProjectDAL.cs(296,29): error CS0103: The name 'SQLHelper' does not exist in the current context
  

Вот как создается компиляция (упрощенная)

  var workspace = new AnalyzerManager(Solution).GetWorkspace();
   var solution = workspace.CurrentSolution;
    foreach (var file in p.Documents)
                        {
         //  Get syntax tree for file
              var tree = file.GetSyntaxTreeAsync().Resu<
                            //  Get root of syntax tree
                            var root = (CompilationUnitSyntax)tree.GetRoot();
                            //  Get project compilation for symbolic relationship in assembly
                            var compilation = p.GetCompilationAsync().Resu<
                            //  Get semantic model based on project compilation and the current document tree
                            var semanticModel = compilation.GetSemanticModel(tree);
                            //  Get all methods from the file
                            var methodReferences = GetMethodReferences(solution, semanticModel, file, tree);
    //   do some more stuff
    }
  

Комментарии:

1. В первую очередь вам пришлось бы поделиться кодом того, как вы получаете рабочее пространство.