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

4

0 回答 0