VS2022生成时System.Runtime程序集类型加载失败报错修复
Visual Studio 2022 生成错误修复方案
问题现象
- 生成名为Garbo的项目时抛出未知生成错误:
未能从程序集“System.Runtime, Version=4.1.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”中加载类型“System.Resources.NeutralResourcesLanguageAttribute” - 经排查确认,错误由项目引用的
markdig.dll触发 - 故障相关截图:



- 当前设备已安装的.NET Framework版本信息:
PSChildName Version ----------- ------- v2.0.50727 2.0.50727.4927 v3.0 3.0.30729.4926 Windows Communication Foundation 3.0.4506.4926 Windows Presentation Foundation 3.0.6920.4902 v3.5 3.5.30729.4926 Client 4.8.04161 Full 4.8.04161 Client 4.0.0.0
错误原因
该错误属于典型的跨框架引用适配问题:手动引用的markdig.dll是面向.NET Core/.NET 5+编译的版本,其依赖的System.Runtime 4.1.2.0和.NET Framework 4.x自带的System.Runtime程序集格式不兼容,对应类型无法被正常加载,最终触发生成失败。
修复步骤
按优先级从高到低选择以下方案操作即可:
- 方案一(推荐,无兼容隐患):移除现有手动引用的
markdig.dll,通过NuGet包管理器安装对应版本的Markdig包- 若项目目标框架为.NET Framework 4.6.1以下,选择安装Markdig 2.x及更早版本
- 若项目目标框架为.NET Framework 4.6.1及以上,可直接安装最新稳定版Markdig,NuGet会自动安装所有适配依赖、生成对应程序集绑定重定向配置,无需手动修改配置文件
- 安装完成后清理解决方案,重新生成即可
- 方案二(需保留现有dll引用的场景):手动补全依赖与绑定配置
- 打开NuGet包管理器控制台,依次执行以下命令安装Markdig依赖的适配包:
Install-Package System.Runtime.CompilerServices.Unsafe Install-Package System.Memory - 打开项目配置文件(桌面项目为
App.config,Web项目为Web.config),在<runtime>节点下添加如下绑定重定向配置:<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="System.Runtime" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-4.1.2.0" newVersion="4.1.2.0" /> </dependentAssembly> </assemblyBinding> - 删除项目下bin、obj目录的所有缓存文件后重新生成
- 打开NuGet包管理器控制台,依次执行以下命令安装Markdig依赖的适配包:
- 方案三(长期方案):如果项目没有强依赖.NET Framework的历史组件,可直接将项目目标框架升级为.NET 6/.NET 8等长期支持的现代.NET版本,高版本Markdig对现代.NET的原生适配更好,不会出现这类跨框架程序集加载错误。
内容的提问来源于stack exchange,提问作者pico
相关产品推荐
相关产品推荐

