代码之家  ›  专栏  ›  技术社区  ›  LaserJesus

ASP.NET MVC升级到beta:IControllerFactory是在未引用的程序集中定义的

  •  3
  • LaserJesus  · 技术社区  · 16 年前

    我目前正在将一个网站从ASP.NET MVC的预览版2更新到测试版。在彻底搜索之后,我的最后一个编译错误在站点中没有解决方案。我在global.asax.cs中有一些代码,它使用windsor容器设置ioc:

    ControllerBuilder.Current.SetControllerFactory(typeof(WindsorControllerFactory));
    

    编译器抱怨:

    The type 'System.Web.Mvc.IControllerFactory' is defined in an assembly that is not referenced. 
    You must add a reference to assembly 'System.Web.Mvc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'.
    

    奇怪的是这个集会 引用。我从MVC测试版程序集文件夹引用它,并将其设置为复制本地。我甚至可以删除bin目录,重建,然后在Reflector中查看程序集并查看界面。我尝试删除并重新添加引用,更改web.config的程序集和命名空间部分。我甚至从GAC中删除了system.web.mvc,以确保它使用的是正确的拷贝。

    在写这个问题的时候,我突然想到温莎可能在内部期待着旧版本的组件。我正在从mvcontrib下载最新版本,以确定这是否是问题所在,我将发布结果。如果是这种情况,那么程序集的版本号是否应该随着最新版本的变化而改变以使这一点变得明显?

    谢谢你的阅读, 布雷特

    2 回复  |  直到 16 年前
        1
  •  2
  •   Brad Wilson    16 年前

    publicKeyToken=空似乎不正确…

    编辑: 我是对的,PublicKeyToken应该是“31BF3856AD364E35”。听起来它们是与未签名的system.web.mvc.dll的私有版本相链接的。

        2
  •  1
  •   Mike Scott    16 年前

    检查您是否已在web.config文件中更新了对3.5.0.0的适当程序集引用,如测试版更新说明中所述。

    推荐文章