如何解决我的项目DLL和GAC中的DLL之间的歧义?

时间:2010-02-24 21:48:14

标签: c# asp.net-mvc visual-studio-2008 dll gac

我目前正在ASP.NET MVC项目中处理another issue。为了更好地理解代码库中发生的事情,我决定在我自己的项目中引用ASP.NET MVC源代码项目,方法是将解决方案文件添加到我的引用中。

当我这样做时,我开始收到HTTP 404错误。

恰好我在OnException()的{​​{1}}方法上设置了断点,否则可能需要很长时间才能找到实际问题。当我将鼠标悬停在HandleErrorAttribute方法调用中的filterContext参数上时,我会收到此OnException说明:

    The type 'System.Web.Mvc.ViewMasterPage' is ambiguous: 
        it could come from assembly [path to assembly in GAC] 
        or from assembly [path to assembly in my project] 

GAC中的程序集就在那里,因为我安装了ASP.NET MVC 2.0 RC2 release

如何最好地解决这种歧义?

2 个答案:

答案 0 :(得分:3)

System.Web.Mvc部分Web.Config中引用了{p> <Compilation><Assemblies>。在我的应用程序中,此条目具有公钥标记属性。

我通过删除PublicKeyToken属性解决了这个问题。

所以这个:

<add assembly="System.Web.Mvc, Version=2.0.0.0, Culture=neutral,
     PublicKeyToken=31BF3856AD364E35"/> 

成为这个:

<add assembly="System.Web.Mvc, Version=2.0.0.0, Culture=neutral"/> 

显然,当PublicKeyToken丢失时,Visual Studio无法在GAC中找到已签名的程序集,因此它被强制使用本地项目程序集。

答案 1 :(得分:1)

我不确定,但也许您的答案在于配置的assemblyBinding标记: http://msdn.microsoft.com/en-us/library/twy1dw1e.aspx