Ошибка: «Не удалось загрузить тип MvcApplication»


241

Я получаю ошибку

Не удалось загрузить тип MvcApplication

когда я пытаюсь запустить свой сайт.

Как это исправить?


35
Однажды я случайно получил эту ошибку на нашем сервере сборки. ручная перестройка решила это.
— Зак

1
Выходной путь задается в свойствах проекта на вкладке сборки
— silasdavis

8
удалите файл global.asax и добавьте новый, и все будет в порядке.
— DotNetGeek

4
Оказывается, новый проект не был выбран в активной конфигурации для сборки.
— JGeerWM

4
Если вы недавно добавили проект или недавно изменили конфигурацию публикации (то есть переключились с AnyCPU на x64), возможно, проект не был создан при его запуске. Перейдите в BUILD-> КОНФИГУРАЦИОННЫЙ МЕНЕДЖЕР и убедитесь, что в столбце сборки установлен флажок. У меня только что возникла эта проблема. Вы также заметите, что ваши точки останова при запуске приложения обозначены кружками. Я думаю, что это результат сборки по умолчанию для .net 4.5.1 на архитектуре процессора, предпочитающей 32-битную. Только проблема, если вы проверите x64
— Дэвид Бридж

Ответы:


115

Как бы глупо это ни звучало, попробовал все, и это не сработало, и, наконец, перезапустил VS2012, чтобы увидеть, как он снова работает.


1
LMFAO, работал на меня тоже, попробовав все упомянутое здесь и не сработало! Спасибо и +1!
— Yustme

Та же проблема здесь. Ошибка появилась после слияния и не исчезнет, ​​пока VS2012 не будет перезапущен.
— StuartQ

1
Для меня то, что могло случиться, было то, что порт использовался вторым экземпляром Visual Studio, у которого проект не был скомпилирован.
— Клей Ленхарт

У меня тоже сработало. Что за свалка
— PAWAN RAJ Shakya

Спустя 5 лет VS2017 и это все еще решение. : /
— Сагив Б.Г.

105

- Для меня исправление было изменить путь вывода на вкладке сборки. Я изменил путь вывода bin\и ошибка исчезла.

-Другое исправление может заключаться в том, что у вас установлен неправильный стартовый проект.


8
Это была наша проблема. Ранее было установлено что-то вроде Debug \ x86 \ bin
— t3rse

4
ХА! Это второй раз за два года, когда я был в этой статье с этой проблемой, впервые это был главный ответ, второй раз, когда был этот ответ.
— Бен Леш

1
Спасибо! Это тоже меня укусило. Я изменил платформу, чтобы убрать некоторые предупреждения, и путь вывода изменился без моего ведома.
— camainc

6
Это был правильный ответ для меня ... Есть идеи о том, почему Visual Stupido ведет себя так?
— andreapier

1
Да, это было это. Изменение в `bin` заставляет все работать как положено. @andreapier: Да, VS2012 тоже ведет себя так глупо. Кто-нибудь исправит это как можно скорее! :)
— теперь тот, кого нельзя называть.

82

Я получал ту же ошибку и, несмотря на все, что упоминалось здесь и в других местах, ничего не получалось. Оказалось, что я скопировал исходный код global.asax.cs из предыдущей версии проекта, которая имела другое имя. Так namespace Testдолжно было быть namespace Test.WebUI. Глупая ошибка, конечно, и я немного смущен, чтобы написать это! Но писать в надежде, что подобная ошибка от кого-либо еще может привести его к проверке и этого тривиального аспекта.


Спасибо, Випул. Я только что сделал то же самое и подумал, что в результате я потерял много работы. Простое изменение имени пространства имен спасло мой бекон
— xiecs

2
Я просто сделал то же самое. Я открыл Global.asax в текстовом редакторе и исправил проблему с пространством имен. Спасибо
— Кайван Карим

6
Я просто сделал то же самое. Просто чтобы уточнить для кого-то еще: Первоначально у меня был тестовый проект под названием «MvcApplication1», который был создан автоматически. Затем я сделал глобальную замену пространства имен «MvcApplication» на «MyTest». В Global.asax в блокноте мне нужно было потом изменить на Inherits = "MyTest.MvcApplication"
— PabloInNZ

Если бы был способ отдать золото, я бы
— Шанабус

53

Просто сделайте ручную сборку вашего решения.

Если вы используете локальный IIS, попробуйте удалить регистрацию сайта в диспетчере IIS, а затем заново создать ее вручную.


Это было для меня победителем, я удалил сайт из репозитория и настроил iis, но никогда не делал сборку в IIS
— Энтони Мейн

31

[Извлечено из вопроса]

Если вы получаете эту ошибку: «Не удалось загрузить тип MvcApplication», посмотрите на путь вывода вашего проекта и убедитесь, что он установлен в «bin \». Проблема в том, что AspNetCompiler не может найти файлы, если они не находятся в расположении по умолчанию.

Другой побочный эффект изменения выходной папки заключается в том, что вы не сможете отладить свой код, и появляется сообщение о том, что информация о сборке не может быть найдена.


1
Это кажется немного странным, когда обычно он разделен между различными конфигурациями сборки.
— nicodemus13

По умолчанию он разделен, но многие люди меняют их на одну папку, чтобы выпуск и отладка находились в одном месте для другого проекта, который ссылается на вывод (установщики и т. Д.).
— StingyJack

Интересно, свойственна ли эта проблема IIS Express? Во всяком случае, почему я понял это, потому что это просто ввинчивается на один из наших новых стартеров: я изменился binдо bin\Debugи , bin\Releaseно старые файлы были все еще в моей binпапке , так что я не видел каких - либо проблем. Конечно, если вы сделаете чистую проверку и создадите эти файлы, то для вас их не будет, поэтому они взорвутся.
— Барт, прочитанный

15

У меня была та же проблема, и я решил ее с помощью следующих шагов

  1. Перейти к свойствам проекта
  2. На вкладке «Build» установите выходной путь «bin»

1
Огромное спасибо за это, это исправило проблему, с которой у меня были проблемы с установкой точек останова!
— Крис

Вот что сработало для меня. Я обнаружил это сам, но все равно спасибо.
— Александр

Святое дерьмо! Это экономит день.
— SKE

14

Ааа это было раздражает.

Получил эту ошибку после отключения питания, и я вернулся к своему проекту.

Я попробовал перезапустить VS. Я попытался установить выходной путь \ bin. Я проверил мои пространства имен.

Но для меня сработало перестроение решения.

Восстановить решение !!!


13

Мое решение: потому что я создал проблему! Я изменил пространство имен в Global.asax.cs

Вам также необходимо изменить значение атрибута Inherits в Global.asax.


3
У меня тоже была эта проблема. Я хотел бы, чтобы Visual Studio провела рефакторинг пространств имен в атрибутах наследования в разметке, а также в классах.
— csharpforevermore

Тоже самое. При переименовании пространств имен убедитесь, что вы нажали shift-alt-F10 или щелкнули правой кнопкой мыши, чтобы переименовать, и он обновит все экземпляры для вас.
— Роб

Это сработало для меня, но было трудно найти, где реализовать решение. Я сделал «Найти все» для доступа к файлу Global.asax, потому что, когда вы дважды щелкаете по Global.asax в редакторе Visual Studio, вы получаете файл Global.asax.cs, который фактически является кодом, стоящим за файлом .asax. Обратите внимание на расширение .cs. Итак: CTRL-F и найдите Global.asax (без .cs) и измените наследование в соответствии с вашим пространством имен.
— GerardV

9

Проверьте код за информацией, предоставленной в global.asax. Они должны правильно указывать на класс в его коде позади.

пример global.asax:

<%@ Application Codebehind="Global.asax.cs" Inherits="MyApplicationNamespace.MyMvcApplication" Language="C#" %>

Пример кода позади:

   namespace MyApplicationNamespace
    {
        public class MyMvcApplication : System.Web.HttpApplication
        {
            protected void Application_Start( )
            {
                AreaRegistration.RegisterAllAreas( );
                FilterConfig.RegisterGlobalFilters( GlobalFilters.Filters );
                RouteConfig.RegisterRoutes( RouteTable.Routes );
                BundleConfig.RegisterBundles( BundleTable.Bundles );
            }
        }
    }

7
  1. Щелкните правой кнопкой мыши по проекту в решении, которое терпит неудачу.
  2. Разгрузить проект
  3. Перезагрузить проект
  4. Построить проект
  5. Перестройте решение

5

Это также может произойти при запуске проекта в Visual Studio, если ваш IIS Express имеет / размещает старый / другой проект с использованием того же назначения порта.

Чтобы это исправить, вы можете изменить назначение порта для этого проекта или закрыть IIS Express.


5

Если вы размещаете в IIS Express и открываете свой проект в двух разных местах, вы можете увидеть эту ошибку.

Решение состоит в том, чтобы пойти Project/Properties/Web/Serversи нажать Create Virtual Directory.


4

Решением для меня было щелкнуть правой кнопкой мыши проект Mvc, выбрать свойства и нажать «Создать виртуальный каталог».

Появилось окно с сообщением о том, что проект был сопоставлен с неверной папкой (в нем была показана папка для другого проекта TFS . Она дала возможность сопоставить его с правильной папкой.


1
Спасибо за совет, причиной для меня было то, что я недавно переехал в ТФ. Мне нужно было разархивировать папку решения и сопоставить ее снова, чтобы приложение работало!
— Adhie

4

Я уже имел bin/в моей вкладке сборки. Я получил global.asax из другой копии проекта, но это не сработало.

Решение, которое наконец-то сработало для меня, состояло в том, чтобы удалить bin/папку и создать новую пустую папку с тем же именем.


1
Это не дает ответа на вопрос. Чтобы критиковать или запрашивать разъяснения у автора, оставьте комментарий под его постом - вы всегда можете комментировать свои собственные посты, и, когда у вас будет достаточно репутации, вы сможете комментировать любой пост .
— JLRishe

@brasofilo Я мог сделать неправильный звонок, но, учитывая острую нехватку информации в исходном вопросе, весьма вероятно, что это не является решением проблемы ОП, и этот ответ достаточно короткий, чтобы его можно было добавить в качестве комментария. С другой стороны, оригинальный вопрос был опубликован давно, и здесь есть тонна ответов «это то, что сработало для меня», так что это сложный вызов. Этот вопрос и его ответы могут нуждаться в некоторой очистке.
— JLRishe

@JLRishe, ну да, это беспорядок вопросов и ответов. Этот ответ может быть даже дубликат второго наиболее проголосовавших, но я не уверен. Я отмечу Q с просьбой о блокировке минимум 10репаратов.
— brasofilo

4

Я знаю, что уже есть много решений, но я подумал, что просто упомяну, что решило это для меня.

Моя конфигурация была настроена на отладку. Смена на Release сделала свое дело для меня.


2
Изменил его на релиз, и он работал ... изменил его обратно на отладку, и он продолжал работать ... спасибо.
— Пол Захра

3

Я получил эту ошибку, потому что я запускал проект, несмотря на некоторые ошибки времени компиляции. Этого я не заметил.


Не заметил, потому что список ошибок bleepity-bleep сказал, что это СЧАСТЛИВЫЙ !!!! Спасибо.
— CindyH


3

Я впал в это. Я прочитал и проверил все возможные решения, которые были даны ранее. Проверка пути сборки, сборка, перестройка, очистка, перезапуск IIS и VS2015, переустановка всех пакетов nuget, компиляция их один за другим и т. Д., ...

Я внезапно вспомнил, что VS хранит некоторые временные файлы ASP в системных папках ... Я думаю, что я должен попробовать, в конце концов, это может быть не хуже. И я опустошил

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files
C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files

И все снова работает ... Странно, что эта проблема имеет такие разные возможные решения ...


3

Я видел это много раз за последнее десятилетие и просто повторил. Есть много проблем, которые приводят к одной и той же ошибке.

Одной из причин является переименование файлов. Если вы работаете с файлами .cshtml, проверьте все пространства имен в этих файлах и в файле Views \ web.config. Для веб-форм переименуйте Default.aspx (связанные файлы .cs и файлы конструктора автоматически переименуются). Изменяется код, но строка Inherits в разметке не меняется. Измените это вручную. Дважды проверьте страницу дизайнера. Иногда (VS2005-8?) Страница дизайнера не отражает изменения в пространстве имен. Не видел этого в 2010+.

Другая проблема заключается в том, когда все это работает в VS или на локальном ПК, но не при развертывании. Это может быть из-за того, что среда развертывания отличается от структуры. Например, ошибка возникает, если вы помещаете свой код в виртуальный каталог в папку приложения, но не возникает, если вы создаете новую папку приложения и размещаете там все свои файлы. Я не понимаю этого, поскольку у меня была новая дочерняя / виртуальная папка с такими же разрешениями (или я так думаю), и (я считаю) пул приложений должен работать одинаково для всего в данной папке приложения.

В моем случае у меня также была папка bin со сборками, которые обновляются из других сборок на сервере IIS. Опять же, обеспечение их запуска в отдельной папке приложения привело к успеху.

НТН


2

Я получаю эту проблему каждый раз, когда сохраняю файл, который динамически компилируется (ascx, aspx и т. Д.). Я жду около 8-10 секунд, а потом уходит. Это адски раздражает.

Я подумал, что это, возможно, проблема с IIS Express, поэтому я попытался на встроенном сервере разработки и все еще получаю его после сохранения файла. Я запускаю приложение MVC, я также использую T4MVC, может быть, это фактор ...


2

У меня была эта расстраивающая ошибка в среде разработки в Visual Studio, и оказалось, что причина была довольно глупой. Короче говоря, если у вас есть более одного веб-проекта / сайта в решении: убедитесь, что порт, к которому вы пытаетесь получить доступ к веб-сайту, совпадает с портом, настроенным в Project Properties-> Web.

В моем случае ошибка была вызвана тем, что я использовал другой порт для доступа к веб-сайту (в браузере), а проекту в решении был назначен другой порт. Чтобы объяснить немного больше, у меня было два проекта веб-сайта в моем решении Website1 (назначенный порт 8001 в ISS Visual-Studio) и Website2 (назначенный порт 8101 в ISS Visual-Studio). Поэтому, хотя я создавал Website1, я пытался получить доступ к сайту с помощью locahost: 8101.

Теперь, когда я наконец-то понял проблему, я вижу, что комментарий @ StingyJack касается и аналогичной проблемы.


2

Убедитесь, что пространство имен в вашем global.asax.cs совпадает с пространством имен вашего веб-приложения


2

У меня снова была эта ошибка, и ничего из вышеперечисленного не помогло мне Я должен был удалить следующий узел в .csproj файла: <VisualStudio>....</VisualStudio>. Перезагрузил VS и все заработало.

К вашему сведению, VS смог воссоздать узел, а затем я воссоздал сайт в IIS (через VS), и он работал отлично.

Надеюсь, это кому-нибудь поможет.


1

Убедитесь, что вам не нужно открывать проект MVC, например File-> Open Web Site, используйте File-> Open Project .


1

Для меня сработало перезапуск Visual Studio.

Я попытался восстановить вручную, выполнить очистку и восстановление и удалить папку bin, которая не работала. Мой выходной путь уже был установлен в bin \


Я выполнил перестройку на уровне решения, но заметил, что папка bin моего проекта пуста. Я сделал сборку только для проекта, и вдруг у меня появилась папка с заполненным мусором. Я запустил проект, и он работал.
— MrBoJangles

1

Если вы изменили пространство имен, убедитесь, что вы щелкнули правой кнопкой мыши и изменили рефакторинг.


1

Это может случиться очень часто, если вы измените свое пространство имен. Верните имя вашего пространства имен, как это было раньше, и это должно заставить его работать!


1

В некоторых случаях создаваемые вами новые проекты по умолчанию не настроены на сборку. Если вы щелкнете правой кнопкой мыши по вашему решению, выберите Propertiesи выберите Configuration Properties| Configurationузел слева и убедитесь, что ваш проект имеет галочку подBuild столбцом. В обычных обстоятельствах я обнаружил, что это происходит по умолчанию. В других обстоятельствах (у меня бывает несколько сложное решение для Web Api / Xamarin для Android и iOS / Mvc 5, которое демонстрирует такое поведение), флажок отсутствует.

Это связано с другими ответами - если сборка вашего веб-проекта недоступна, вы получите эту ошибку. Но это может быть распространенным сценарием, особенно если учесть, что вы действительно компилируете свое решение - проект просто не создается.


1

Я получил эту ошибку, потому что мой контроль версий был настроен на игнорирование папки bin . Очень глупо, но, может быть, кому-то еще это будет полезно.


1
Разве вы не хотите игнорировать папку bin, а также obj и другие вещи, которые созданы и не являются частью исходного кода?
— MrBoJangles

Обычно да. Но на этом конкретном сайте это был единственный способ отправить элементы на сервер. Я, вероятно, должен был сделать мой ответ более общим.
— Брент Вагонер

Я полностью понимаю, что такое особые обстоятельства.
— MrBoJangles

1

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.