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

Jim*_*Aho 5 c# asp.net temporary-asp.net-files iis-7.5

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

启动调试器后,我立即遇到以下错误消息:

类型“System.Web.Mvc.WebViewPage”存在于“c:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\promotionweb\20a5681f\9ce59023\ assembly\dl3\29f671cf\37f0bcf2_4619d001\”中System.Web.Mvc.DLL'和'c:\ Windows \ Microsoft.NET \ assembly \ GAC_MSIL \ System.Web.Mvc \ v4.0_4.0.0.0__31bf3856ad364e35 \ System.Web.Mvc.dll'

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

我已经尝试了此答案中提到的所有步骤,这些步骤源自类似的问题。然而,它对我来说根本没有帮助。

我有一些怀疑它必须对不同的编译模型执行,所以我尝试编译 x86 和 AnyCPU,并清理上面提到的所有目录。似乎没有什么帮助。

有什么想法可能会导致 GAC 和我的临时 ASP.NET 文件之间出现这种干扰吗?

Jim*_*Aho 3

下面是一个相当不错的故事,但我认为它可能对其他人有益。

首先,我在 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版本。1System.Web.Mvc因为我认为这是编写指南时的正确版本。

完成后,我编译了该项目,并进入了我发布的问题中运行时错误的永无休止的循环。我的项目是针对 4.0.0 版本编译的。1根据 Windows 更新,这似乎是正确的版本号)。编译是正确的,但我的 中包含以下行web.config

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

该应用程序是针对 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
Run Code Online (Sandbox Code Playgroud)

然后就是错误。我仍然这部分很奇怪。

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

其他一些来源: