1

我有一个针对 MVC Preview 3(引用 MVC 程序集的本地副本)构建的应用程序,我试图在安装了 ASP.NET MVC beta 的机器上对其进行修改/测试。我对更新这个应用程序以运行 MVC 测试版并不感兴趣——我只需要做一些小改动。

RouteCollection.IgnoreRoutes (在 global.asax.cs 中)上的 MissingMethodExceptions 失败,因为在运行时,CLR 总是在 GAC 中找到 System.Web.Mvc 的 beta 版本并加载它而不是在我的站点中加载预览 3 版本的 \ bin 目录。

由于程序集具有相同的名称、版本和公钥,我相信在 web.config 中无法区分它们,所以我认为这里唯一的解决方案是从 GAC 中删除 ASP.NET MVC beta 程序集。

只有 - 我不能这样做,因为它们是由 Windows Installer 安装的,所以我无法使用 gacutil.exe /u 删除它们,当我尝试直接删除它们时,我得到“访问被拒绝”。

任何人都知道我可以如何删除这个程序集 - 或者,如果失败了,如何在 GAC 中具有 System.Web.Mvc beta 的系统上运行/托管需要 System.Web.Mvc preview 3 的应用程序?

4

4 回答 4

2

你可以下载ASP.NET MVC Preview 3 Source并用你自己的 SNK 编译它,或者给它一个不同的版本作为官方版本并在你的网站中引用它。

于 2008-11-08T15:11:15.937 回答
1

我认为您最好的选择是,因为该应用程序是基于预览版构建的,所以您应该升级该应用程序以使用 beta 版本,因为您知道最终您将不得不更新它以使用生产版本。我知道这不是你想听到的,但我认为这是 CTP 版本和公开测试版的生活事实。

于 2008-11-08T15:59:10.117 回答
1

Hangy 的回答似乎符合这里的要求——如果我们最终不得不在多个工作站上维护这个应用程序,这正是我们将要做的,直到我们有时间将代码迁移到 beta/live 版本。

但与此同时,我实际上所做的是破解注册表,以便我可以从 GAC 中删除 System.Web.Mvc - 完整的详细信息已发布在我的博客上。现有代码现在正在运行,无需对 Preview 3 或 Beta 项目进行任何修改。

于 2008-11-08T16:18:09.733 回答
0

根据此处的此问题此参考链接,您需要删除注册表项

System.Web.Mvc,version="1.0.0.0",culture="neutral",publicKeyToken="31BF3856AD364E35",processorArchitecture="MSIL"

HKEY_CLASSES_ROOT\Installer\Assemblies\Global

//编辑 - 哦,那是你的博客,哈哈。感谢您的帖子:-)

于 2008-11-18T02:47:14.150 回答