Ошибка компилятора CS0433 - тип существует как в файлах GAC, так и во временных файлах ASP.NET

У меня есть ситуация, когда я получаю ошибку времени выполнения при запуске ASP.NET MVC4. Я недавно мигрировал в MVC4 из MVC3.

При запуске отладчика я сразу же сталкиваюсь с этим сообщением об ошибке:

Тип 'System.Web.Mvc.WebViewPage' существует в обоих каталогах: c:\Windows\Microsoft.NET\Framework\v4.0.30319\ Временные файлы ASP.NET \ promoweweb\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?

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.1 из System.Web.Mvc, поскольку я думаю, что это была правильная версия того времени, когда было написано руководство.

Закончив, я скомпилировал проект и попал в бесконечный цикл ошибки времени выполнения в вопросе, который я разместил. Мой проект был скомпилирован с версией 4.0.0.1 ( который является правильным номером версии в соответствии с обновлением Windows). Компиляция была правильной, но у меня была следующая строка в моем 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,

Некоторые другие источники:

У меня когда-то была эта ошибка. Я заметил, что важно, чтобы ссылка в проекте и тег сборки в файле web.config совпадали. Я удалил ссылку на сборку, которая не была такой же, как в web.config, а затем добавил ссылку с правильной версией. Я полагаю, вы могли бы сделать это и наоборот.

Другие вопросы по тегам