【发布时间】:2010-11-03 01:34:02
【问题描述】:
我有一个 Web 应用程序,其中包含几个使用 MVC 的不同子网站。我遇到的问题是两个子网站使用不同的 MVC 版本。一个最近升级到使用 1.0 版本,一个卡在早期的预览版本上。
将其中一个子网站升级到 1.0 后,使用预览版的另一个网站失败并出现以下错误:
Could not load type 'System.Web.HttpContextWrapper2' from assembly 'System.Web.Abstractions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'
我怀疑问题是由于 System.Web.Abstractions DLL 的 1.0 版本和预览版本都标记为版本 3.5.0.0,但实际上包含不同的类。因此,当预览应用引用 System.Web.Abstractions 时,它会获取已加载的 MVC 1.0 版本,而不是其 bin 目录中的预览版本。
有什么方法可以强制运行时将程序集加载两次,就好像它们是两个不同的版本一样,即使它们实际上标有相同的版本号?我正在考虑在我的网络配置中使用该标签,但不能完全理解我将如何使用它来执行此操作,或者它是否甚至可以实现我需要在这里做的事情。
【问题讨论】:
-
你真的需要两个版本并排运行,卸载以前的版本会解决你的问题吗?
-
我确实需要两个版本并排运行 - 1.0 版本中存在重大更改,导致针对预览版本编写的代码不再有效。我可以将使用预览版的应用程序转换为使用 1.0,但如果可能的话,我宁愿避免现在这样做。
-
我最终只是将应用程序转换为 MVC 1.0。无论如何,它最终必须完成,但我仍然想知道是否有办法做到这一点。
标签: asp.net-mvc web-config .net-3.5