Загружает ли Roslyn только ссылки на метаданные проектов при загрузке проекта в рабочую область? - PullRequest
0 голосов
/ 26 мая 2020
 MSBuildLocator.RegisterDefaults();
        var workspace = MSBuildWorkspace.Create();
        workspace.LoadMetadataForReferencedProjects = true;
        var solution = workspace.OpenSolutionAsync("C:\\Users\\Dell\\Desktop\\TestCompilation\\RoslynDetectingApproach\\RoslynDetectingApproach.sln").Result;
        foreach (var project in solution.Projects)
        {
            var compilation = await project.GetCompilationAsync();
            var metadata = compilation.ExternalReferences;
            foreach (var item in metadata)
            {
                System.Console.WriteLine(item.Display);
            }
        }

Я пробовал использовать приведенный выше код, чтобы получить все внешние ссылки, но он не включает указанные пакеты и сборки. Отображаются только ссылки на проекты. Например, для проекта, который имеет много типов ссылок:

<ItemGroup>
  <PackageReference Include="Microsoft.Build.Locator" Version="1.2.6" />
  <PackageReference Include="Microsoft.CodeAnalysis" Version="3.6.0" />
</ItemGroup>
<ItemGroup>
  <ProjectReference Include="..\Test\Test.csproj" />
</ItemGroup>

Мой код не может получить пакеты, на которые есть ссылки, он получает только проекты, на которые есть ссылки, и в этом примере это будет проект Test. предложения по получению упомянутых пакетов и сборок.

...