加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – Bin为Web应用程序部署的DLL优先于GAC的DLL?

发布时间:2020-12-16 09:36:28 所属栏目:asp.Net 来源:网络整理
导读:我遇到的问题是使用较旧的GAC程序集而不是bin中较新的版本程序集. 服务器: Assembly version: ASP.NET MVC 3 RC 1 (3.0.11029.0)Full name: System.Web.Mvc,Version=3.0.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35Code base: file:///C:/WINDOWS
我遇到的问题是使用较旧的GAC程序集而不是bin中较新的版本程序集.

服务器:

Assembly version: ASP.NET MVC 3 RC 1 (3.0.11029.0)
Full name: System.Web.Mvc,Version=3.0.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35
Code base: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Web.Mvc/v4.0_3.0.0.0__31bf3856ad364e35/System.Web.Mvc.dll
Deployment: GAC-deployed

开发机器:

Assembly version: Unknown version (3.0.20105.0)
Full name: System.Web.Mvc,PublicKeyToken=31bf3856ad364e35
Code base: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Web.Mvc/v4.0_3.0.0.0__31bf3856ad364e35/System.Web.Mvc.dll
Deployment: GAC-deployed

较新的RTM版本(3.0.20105.0)位于应用程序的bin目录中.但是,应用程序正在使用GAC中的那个而不是本地bin.我从Windows应用程序的经验是本地bin部署的DLL始终优先,因为只有在与应用程序相同的目录中找不到DLL时才会检查GAC.对于Web应用程序,此约定似乎不是这种情况.

如何强制它使用我的新版本bin部署DLL(3.0.20105.0)?

编辑:
我实际上尝试过像这样的绑定重定向:

<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="3.0.11029.0" newVersion="3.0.20105.0" />

我尝试了旧版本的几个变体,如0.0.0.0-4.0.0.0.在我的所有尝试中,通常它会加载旧版本,或者给我这个异常消息:

Could not load file or assembly 'System.Web.Mvc' or one of its dependencies. 
The located assembly's manifest definition does not match the assembly reference.

绑定日志没有任何错误,除了这是最后两行:

WRN: Comparing the assembly name resulted in the mismatch: Build Number
ERR: Failed to complete setup of assembly (hr = 0x80131040). Probing terminated.

解决方法

回答是SO Dll in both the bin and the gac,which one gets used?注意,您必须运行 strong name hijack或它将使用GAC版本. 我会重申这一点,它不是MVC特有的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读