如何在Visual Studio 2022中指定Microsoft.AspNetCore.App版本以规避运行异常
解决方案:指定Microsoft.AspNetCore.App运行时版本
1. 显式在项目文件中锁定框架版本
编辑你的.csproj文件,添加FrameworkReference节点并指定具体版本,覆盖默认的自动引用逻辑:
<Project Sdk="Microsoft.NET.Sdk.Web"> <PropertyGroup> <TargetFramework>net8.0</TargetFramework> <!-- 可选:同时锁定运行时框架版本 --> <RuntimeFrameworkVersion>8.0.10</RuntimeFrameworkVersion> </PropertyGroup> <ItemGroup> <!-- 显式指定Microsoft.AspNetCore.App版本 --> <FrameworkReference Include="Microsoft.AspNetCore.App" Version="8.0.10" /> </ItemGroup> </Project>
该配置会强制项目编译和运行时依赖8.0.10版本的ASP.NET Core框架。
2. 调整运行时自动升级策略
修改runtimeconfig.template.json中的rollForward参数,避免自动升级到更高的次版本:
{ "runtimeOptions": { "tfm": "net8.0", // 将Minor改为Patch或Disable,禁止跨次版本升级 "rollForward": "Patch", "frameworks": [ { "name": "Microsoft.NETCore.App", "version": "8.0.10" }, { "name": "Microsoft.AspNetCore.App", "version": "8.0.10" } ], "configProperties": { "System.GC.Server": true, "System.Globalization.Invariant": false, "System.Reflection.Metadata.MetadataUpdater.IsSupported": false, "System.Reflection.NullabilityInfoContext.IsSupported": true, "System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false } } }
Patch:仅允许补丁版本升级(比如8.0.10 → 8.0.10.x),不会升级到8.0.11Disable:完全禁止自动升级,必须严格匹配指定的8.0.10版本
3. 发布时强制指定运行时版本
如果是发布应用,使用dotnet publish命令时显式指定框架版本和运行时:
dotnet publish -c Release --runtime linux-x64 --framework net8.0 --self-contained false
加上--self-contained false确保使用共享框架,结合项目文件配置,会强制依赖8.0.10版本。
4. 验证已安装的运行时
运行以下命令确认系统中已安装目标版本的运行时:
dotnet --list-runtimes
确保输出中包含Microsoft.AspNetCore.App 8.0.10 [x64]。若不想系统自动更新.NET框架,可通过系统包管理器(如apt、yum)禁用.NET自动更新源,或在Windows中关闭Windows更新里的.NET相关更新。
内容的提问来源于stack exchange,提问作者vito
相关产品推荐
相关产品推荐

