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。您能否提供任何建议以获取引用的包和程序集。