编译器错误CS0433 - 该类型存在于GAC和临时ASP.NET文件中

时间:2015-01-16 13:05:33

标签: c# asp.net iis-7.5 temporary-asp.net-files

我遇到运行ASP.NET MVC4时出现运行时错误的情况。我最近从MVC3迁移到了MVC4。

启动调试器后,我立即面对此错误消息:

  

类型' System.Web.Mvc.WebViewPage'存在于两者中   ' c:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Temporary ASP.NET   文件\ promotionweb \ 20a5681f \ 9ce59023 \组件\ DL3 \ 29f671cf \ 37f0bcf2_4619d001 \ System.Web.Mvc.dll程序'   和   ' C:\ WINDOWS \ Microsoft.NET \组件\ GAC_MSIL \ System.Web.Mvc \ v4.0_4.0.0.0__31bf3856ad364e35 \ System.Web.Mvc.dll程序'

我在IIS 7.5中运行,使用MVC项目本身的解决方案设置,另一个C#库以及一个控制台应用程序项目。

我已经尝试all steps mentioned in this answer, descended from a similar question了。但是在我的情况下它根本没有用。

我对不同的编辑模型有一些疑问,所以我试过compiling for x86 and AnyCPU,清理上面提到的所有目录。似乎没有任何帮助。

任何可能导致GAC与我的临时ASP.NET文件之间发生干扰的想法?

2 个答案:

答案 0 :(得分:2)

下面是一个很简单的故事,但我认为它可能会让其他人受益。

首先,我在Visual Studio 2013中打开了我的项目,并得到了投诉。我按照从VS2013内部的链接(找不到它)到Microsoft站点,在那里它解释了如何手动将MVC3升级到MVC4项目。我遵循的步骤需要手动更改web.config。

我做的一项更改是修改System.Web.Mvc引用的版本号。以前它是3.0.0.0,根据指南4.0.0.0是要改变的数字。另一步是进入NuGet包管理器,搜索ASP.NET MVC4并安装它。这个下载的版本4.0.0。{strong> 1 的System.Web.Mvc,因为我认为这是指南编写时的正确版本。

完成后,我编译了项目,并在我发布的问题中进入了永不停止的运行时错误循环。我的项目是针对4.0.0版编译的。 1 which seems to be the correct version number according to a windows update)。编译是正确的,但我在web.config中有以下行:

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

应用程序是针对4.0.0编译的。 1 ,但是正在运行并搜索4.0.0。 0 并在以下两个位置找到它:

c:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET 
c:\Windows\Microsoft.NET\assembly\GAC_MSIL

和错误。我仍然认为这部分很奇怪。

我的解决方案是修改web.config,更改上面提到的程序集引用版本,以及System.Web.Mvc的绑定重定向。

其他一些消息来源:

答案 1 :(得分:1)

我曾经遇到过这个错误。我注意到项目中的引用和web.config中的add assembly-tag是相同的很重要。我所做的是删除与web.config中不同的程序集的引用,然后添加具有正确版本的引用。我想你也可以反过来做。