.NET 4.8项目执行Add-BindingRedirect报错:程序集权限集不一致
解决Add-BindingRedirect报错“Loading this assembly would produce a different grant set from other instances”的方案
针对.NET 4.8网站项目(含.publishproj)执行Add-BindingRedirect时出现的0x80131401错误,可尝试以下步骤解决:
手动统一程序集版本与绑定重定向
收集所有类库和网站项目的程序集引用信息,确保同名称程序集的版本、公钥令牌完全一致。手动编辑web.config和所有类库的app.config,将<assemblyBinding>节点下的重定向规则统一,示例:<dependentAssembly> <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-13.0.0.0" newVersion="13.0.0.0" /> </dependentAssembly>彻底清理项目缓存与输出
- 删除所有项目的
bin、obj文件夹,以及网站项目的发布输出目录 - 删除解决方案根目录的
packages文件夹,执行Restore-NuGetPackages重新还原包 - 删除VS组件缓存:清空
%LOCALAPPDATA%\Microsoft\VisualStudio\<你的VS版本号>\ComponentModelCache下的所有文件
- 删除所有项目的
检查.publishproj配置
打开.publishproj文件,确认以下配置:- 所有程序集引用版本与主项目一致
- PropertyGroup中已开启自动生成绑定重定向:
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects> <GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType>
用MSBuild命令行生成重定向
打开对应版本的VS开发者命令提示符,进入解决方案根目录,执行:msbuild /t:GenerateBindingRedirects /p:Configuration=Release命令执行后,将生成的重定向规则手动复制到web.config中。
排查程序集权限与路径
- 确认所有项目引用的程序集“复制本地”属性设为
true,共享二进制时确保所有项目指向同一物理路径的程序集 - 检查全局程序集缓存(GAC)是否存在冲突版本的程序集,如有则暂时移除或在配置中明确指定版本
- 确认所有项目引用的程序集“复制本地”属性设为
内容的提问来源于stack exchange,提问作者codeMonkey
相关产品推荐
相关产品推荐

