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

标签 asp.net asp.net-mvc-3 web-config gac assembly-resolution

我遇到了一个问题,即在 bin 中使用的是较旧的 GAC 程序集而不是较新版本的程序集。

服务器:

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, 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 

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

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

编辑:
我实际上确实尝试了这样的绑定(bind)重定向:
<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. 

绑定(bind)日志没有任何错误,除了最后两行:
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 特定的。

关于asp.net - Bin 部署的 DLL 优先于 GAC 的 DLL 用于 Web 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9593591/

相关文章:

c# - routes.MapPageRoute 不适用于点?

c# - 将 "/Date(1309498021672)/"反序列化为 DateTime

asp.net - 如何使用 contoso 主题在 Orchard CMS(v1.6) 中配置子菜单?

c# - ASP.NET MVC 3 是否缓存过滤器?

c# - [A]System.Web.WebPages.Razor.Configuration.HostSection 无法转换为... web.config 问题

asp.net - 在我的代码隐藏类中,如何检索授权角色?

javascript - 如何在 GridView 内的链接按钮的 Clientclick 事件上显示动态消息

asp.net-mvc-3 - 我应该使用HTTP引荐来源网址验证或 token 验证来防止CSRF攻击吗?

javascript - 如何防止必填字段的 MVC 非侵入式验证也激活电子邮件验证?

azure - 企业 Web 库 web.config 目前与 Azure 不兼容?