【问题标题】:Installing a modified version of ASP.NET MVC安装 ASP.NET MVC 的修改版本
【发布时间】:2009-10-27 19:32:38
【问题描述】:

我对 MVC 1.0 源代码进行了相对简单的更改,以更正 DropDownList HtmlHelper (discussed in another question) 中的错误。

我能够重建 MVC 解决方案,运行所有测试,包括我为显示我正在修复的错误而添加的测试,并构建了一个新的 DLL。

但是我该如何使用它呢?

我尝试将新的 MVC dll 移动到项目中并更改所有项目引用以指向它,但是当我尝试运行 MVC 网站时,它抛出一个异常,说我的 MVC 版本和 MVC 版本之间存在冲突在 GAC 中。

我尝试使用 gacutil.exe 从 GAC 中删除它,但它说它不能这样做,因为它会使另一个程序(Microsoft 安装程序?失败。

我需要做些什么来安装我新构建的版本来代替“官方”版本?

【问题讨论】:

    标签: asp.net-mvc gac


    【解决方案1】:

    如果您想在不卸载 MVC(包括您可能需要的 Visual Studio 模板)的情况下将其从 GAC 中删除,则需要在注册表中执行此操作:

    • 找到注册表键 HKEY_CLASSES_ROOT\Installer\Assemblies\Global 并查找以 System.Web.Mvc 开头的键 - 删除它

    现在您应该可以使用 gacutil.exe 从 GAC 中删除 System.Web.Mvc,并且您应该可以使用 /bin 文件夹中的版本。

    【讨论】:

    • 好的,这使 MVC 脱离了 GAC 并缓解了冲突,但我仍然有部分代码试图加载该版本。具体来说,BuildManger.CreateInstanceFromVirtualPath 抛出一个异常,说它不能“加载 MVC 版本 1.0.0.0,公共令牌 = ...清单定义与程序集引用不匹配”我已经从 web.config 中取出程序集引用并用通用的“添加名称=“System.Web.Mvc”(没有详细信息)替换它。我需要重新定向程序集还是什么?我还需要做什么才能让它接受新版本贯穿始终?
    • 好的,我明白了。我已经更改了根 web.config 中的程序集引用,但错过了 View 文件夹中有一个 web.config 的事实,并且它有一些我必须更改的完全限定的引用。一旦我这样做了,它就起作用了。
    • 我认为您需要 web.config 中的 system.web/compilation/assemblies 部分中的条目。也许尝试再次添加。您是否强烈命名了组件?确保您的 PublicKeyToken 匹配
    【解决方案2】:

    编译修改后的MVC框架的时候改一下版本号怎么样?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-31
      • 2012-01-18
      相关资源
      最近更新 更多