使用dotnet restore还原NuGet包时遇Microsoft.NETCore.App依赖解析错误
我来帮你排查这个dotnet restore时遇到的错误,你看到的:
Unable to resolve 'Microsoft.NETCore.App (>= 2.1.0)' for '.NETCoreApp,Version=v2.1'
核心原因是你的Visual Studio版本与安装的.NET Core SDK版本不兼容,具体来说:
你安装的是.NET Core 2.1 RC1 SDK(dotnet-sdk-2.1.300-rc1-008673),但这个版本的SDK需要Visual Studio 2017 15.6 Preview 3或更高版本才能支持,而你当前使用的VS2017 v15.2版本太旧,无法识别这个SDK,也无法正确还原对应的RC1版本NuGet包。
下面是具体的解决步骤:
1. 升级Visual Studio版本
直接升级你的VS2017到15.6 Preview 3及以上版本(或者如果现在已经有正式版,也可以升级到支持.NET Core 2.1正式版的VS版本,比如VS2017 15.7+)。升级完成后,VS会自动识别你已安装的.NET Core 2.1 RC1 SDK,此时dotnet restore就能正常找到对应的包源。
2. 优化你的.csproj配置(可选但推荐)
对于.NET Core 2.1及以上版本,Microsoft.AspNetCore.App是官方提供的元包,不需要手动指定版本号(SDK会自动匹配对应的版本)。你可以修改csproj中的对应引用:
<!-- 替换原来带版本的引用 --> <PackageReference Include="Microsoft.AspNetCore.App" />
这样SDK会自动根据当前使用的版本匹配最合适的包版本,避免版本不匹配的问题。
3. 清理并重新还原包
升级VS后,先执行以下命令清理项目:
dotnet clean
然后再重新执行还原命令:
dotnet restore
或者直接在Visual Studio中右键项目,选择「还原NuGet包」即可。
备选方案(不推荐)
如果你暂时不想升级VS,只能降级你的.NET Core SDK到VS2017 15.2支持的版本(比如.NET Core 2.0 SDK),同时修改项目的TargetFramework为netcoreapp2.0,并把所有相关包版本替换为2.0.x系列。但这样会导致你无法使用.NET Core 2.1的新特性,所以还是优先推荐升级VS。
内容的提问来源于stack exchange,提问作者Mirhat

