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 になります。参照されたパッケージとアセンブリを取得するための提案をお願いします。