已安装ASP.NET Core 3.1运行时,应用启动提示需.NET 6.0.12
问题描述
在Ubuntu WSL环境执行dotnet run运行ASP.NET Core 3.1应用时,出现如下报错:
It was not possible to find any compatible framework version
The framework 'Microsoft.NETCore.App', version '6.0.12' was not found.
- The following frameworks were found:
3.1.32 at [/usr/share/dotnet/shared/Microsoft.NETCore.App]
5.0.17 at [/usr/share/dotnet/shared/Microsoft.NETCore.App]You can resolve the problem by installing the specified framework and/or SDK.
项目.csproj明确指定目标框架为netcoreapp3.1:
<PropertyGroup> <TargetFramework>netcoreapp3.1</TargetFramework> <RootNamespace>xxxxxx</RootNamespace> <AssemblyName>xxxxxxxx</AssemblyName> <AssemblyVersion>1.0.1.0</AssemblyVersion> <FileVersion>1.0.1.0</FileVersion> <Version>1.0.1</Version> </PropertyGroup>
本地已安装的SDK和运行时信息:
$ dotnet --list-sdks 3.1.426 [/usr/share/dotnet/sdk] 5.0.408 [/usr/share/dotnet/sdk] 6.0.404 [/usr/share/dotnet/sdk] $ dotnet --list-runtimes Microsoft.AspNetCore.App 3.1.32 [/usr/share/dotnet/shared/Microsoft.AspNetCore.App] Microsoft.AspNetCore.App 5.0.17 [/usr/share/dotnet/shared/Microsoft.AspNetCore.App] Microsoft.NETCore.App 3.1.32 [/usr/share/dotnet/shared/Microsoft.NETCore.App] Microsoft.NETCore.App 5.0.17 [/usr/share/dotnet/shared/Microsoft.NETCore.App]
已确认ASP.NET Core 3.1运行时存在,但应用无法启动,求原因及解决办法。
可能原因
- 全局默认SDK版本为.NET 6:
dotnet run默认会使用系统中最高版本的SDK(此处为6.0.404)构建项目,尽管项目目标框架是3.1,但.NET 6 SDK在构建过程中可能生成依赖.NET 6运行时的配置,引发版本不兼容问题。 - runtimeconfig.json配置异常:项目构建后生成的
[项目名].runtimeconfig.json可能被错误配置为要求.NET 6运行时,比如构建过程中被高版本SDK覆盖。 - NuGet缓存冲突:本地NuGet缓存中可能存在.NET 6版本的依赖包,导致构建时引入不兼容的依赖项。
解决办法
1. 强制指定项目使用的SDK版本(推荐)
在项目根目录创建global.json文件,锁定使用.NET 3.1 SDK构建运行:
{ "sdk": { "version": "3.1.426" } }
创建后重新执行dotnet run,系统会自动使用指定的3.1版本SDK处理项目。
2. 显式指定运行时启动
执行dotnet run时通过--runtime参数指定使用.NET Core 3.1运行时:
dotnet run --runtime netcoreapp3.1
3. 检查修正runtimeconfig.json
找到项目输出目录下的[项目名].runtimeconfig.json,确保其runtimeOptions配置为3.1版本:
{ "runtimeOptions": { "tfm": "netcoreapp3.1", "framework": { "name": "Microsoft.NETCore.App", "version": "3.1.32" } } }
若配置错误,手动修正后再启动应用。
4. 清理缓存并重新构建
执行以下命令清理NuGet缓存,重新构建项目:
dotnet nuget locals all --clear dotnet clean dotnet restore dotnet run
内容的提问来源于stack exchange,提问作者Fatih Dumanlı
相关产品推荐
相关产品推荐

