仅在 .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
我的代码负责根据解决方案文件路径使用 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