仅在 .NET Core 中出现 Roslyn 错误:"ResolvePackageFileConflicts" 任务意外失败

Roslyn error only with .NET Core: "ResolvePackageFileConflicts" task failed unexpectedly

我的代码负责根据解决方案文件路径使用 Roslyn API 获取类型命名空间;在我找到名称空间之前,我得到了带有以下内容的文档:

using (var ws = MSBuildWorkspace.Create())
{
    var solution = await ws.OpenSolutionAsync(solutionPath);
    
    //[...] some code

    var diagnostics = ws.Diagnostics;

    //[...] some code

    return solution.Projects.SelectMany(p => p.Documents);
}

当我将 .NET Framework 解决方案中的一些解决方案文件路径作为参数传递时,代码运行良好。但是当我从 .NET Core 解决方案中将一些解决方案文件路径作为参数传递时,变量 diagnostics 会出现一些错误(解决方案中的每个项目都有一个错误):

Msbuild failed when processing the file '[project's .csproj file]' with message: C:\Program\Files\dotnet\sdk.1.301\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.ConflictResolution.targets: (39, 5): The "ResolvePackageFileConflicts" task failed unexpectedly. System.IO.FileNotFoundException: Could not load file or assembly 'NuGet.Versioning, Version=5.6.0.5, Culture=neutral, PublicKeyToken=31bf3856ad364e35'. The system cannot find the file specified.

两种解决方案(.NET Core 和 .NET Framework)都能正确编译。当我使用 Roslyn 分析 .NET Core 项目时,是否必须设置一些特定的配置?

我在使用 .Net Core 3.1 项目加载 Nodatime 时设法重现了这一点。为了解决它,您可以将以下 NuGet 包引用添加到您的解决方案中:

  • NuGet.Frameworks
  • NuGet.Packaging
  • NuGet.ProjectModel
  • NuGet.Versioning