Ошибка: «Не удалось загрузить тип 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.