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

Rob*_*vey 5 c# dll asp.net-mvc gac visual-studio-2008

我目前正在ASP.NET MVC项目中处理另一个问题。为了更好地理解代码库中发生的事情,我决定通过将解决方案文件添加到我的引用中来引用我自己的项目中的ASP.NET MVC源代码项目。

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

碰巧我在的OnException()方法上设置了一个断点HandleErrorAttribute,否则可能要花很长时间才能找到实际的问题。当我将鼠标悬停filterContextOnException方法调用中的参数上时,得到以下Exception描述:

    类型“ System.Web.Mvc.ViewMasterPage”不明确: 
        它可能来自组装[GAC中的组装路径] 
        或从程序集[我项目中的程序集路径] 

GAC中的程序集在那里是因为我安装了ASP.NET MVC 2.0 RC2版本

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

Rob*_*vey 3

System.Web.MvcWeb.Config在、 部分中引用<Compilation><Assemblies>。在我的应用程序中,此条目具有公钥令牌属性。

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

所以这:

<add assembly="System.Web.Mvc, Version=2.0.0.0, Culture=neutral,
     PublicKeyToken=31BF3856AD364E35"/> 
Run Code Online (Sandbox Code Playgroud)

变成这样:

<add assembly="System.Web.Mvc, Version=2.0.0.0, Culture=neutral"/> 
Run Code Online (Sandbox Code Playgroud)

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