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. предложения по получению упомянутых пакетов и сборок.