重命名旧DLL后仍提示Could not load file or assembly错误如何解决
修复方案
- 移除运行目录下的旧DLL
不要将重命名后的BookService.BusinessLogic_old.dll及对应pdb文件存放在INetPub的应用运行目录中。.NET运行时解析程序集时会扫描目录内所有后缀为.dll的文件,即使修改了文件名,只要文件内的程序集清单名称匹配,就可能触发版本校验冲突,直接将旧文件移动到非运行目录或删除即可。 - 清理并重新编译解决方案
打开VS2013解决方案,右键点击解决方案选择「清理解决方案」,再右键点击BookService.BusinessLogic项目选择「重新生成」。检查BookJob项目的引用属性,确认对BookService.BusinessLogic、BookServiceContracts的引用路径指向项目输出路径,而非INetPub下的旧文件路径,「复制本地」属性设置为True。 - 清理IIS缓存并重启服务
停止对应站点,删除IIS临时编译缓存:32位应用删除C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files下对应站点的文件夹,64位应用删除C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files下对应站点的文件夹,之后重启应用程序池和站点。 - 同步更新控制台应用的依赖
如果BookJob为单独部署,将新编译的BookService.BusinessLogic.dll、BookServiceContracts.dll同步替换到BookJob的运行目录,避免控制台端加载旧版本DLL。 - 校验程序集绑定配置(可选)
检查服务端的Web.config和BookJob的App.config文件,查看<assemblyBinding>节点下是否存在针对BookService.BusinessLogic的错误重定向规则,确保重定向的版本范围与新生成的DLL版本匹配。 - 检查GAC注册情况(可选)
如果以上步骤都未解决问题,打开VS开发者命令提示符,执行gacutil /l BookService.BusinessLogic检查全局程序集缓存中是否注册过旧版本的该程序集,如有则执行gacutil /u BookService.BusinessLogic卸载旧版本。
内容的提问来源于stack exchange,提问作者RKh
相关产品推荐
相关产品推荐

