Błąd: «Nie można załadować typu MvcApplication»


240

Pojawia się błąd

Nie można załadować typu MvcApplication

kiedy próbuję uruchomić moją stronę internetową.

Jak to poprawić?


35
Ten błąd dostałem losowo pewnego dnia na naszym serwerze kompilacji. wykonanie ręcznej przebudowy rozwiązało to.
Zack

1
Ścieżka wyjściowa jest ustawiona we właściwościach projektu na zakładce kompilacji
silasdavis

8
usuń plik global.asax i dodaj nowy, a wszystko będzie dobrze.
DotNetGeek

4
Okazuje się, że nowy projekt nie został wybrany w aktywnej konfiguracji do kompilacji.
JGeerWM

4
Jeśli ostatnio dodałeś projekt lub niedawno zmieniłeś konfigurację publikowania (tj. Zmieniłeś z AnyCPU na x64), być może projekt nie został zbudowany podczas jego uruchamiania. Przejdź do BUILD-> CONFIGURATION MANAGER i sprawdź, czy w kolumnie kompilacji zaznaczono pole wyboru. Właśnie miałem ten problem teraz Zauważysz również, że twoje punkty przerwania są wyraźne koła podczas uruchamiania aplikacji. Myślę, że jest to wynik domyślnej kompilacji .NET 4.5.1 na architekturze procesorów faworyzującej 32-bit. Jedyny problem, jeśli zaznaczysz x64
David Bridge,

Odpowiedzi:


115

Choć może to zabrzmieć głupio, wypróbowałem wszystko, ale to nie zadziałało i ostatecznie zrestartowałem VS2012, aby zobaczyć, jak działa ponownie.


1
LMFAO, dla mnie też zadziałało po wypróbowaniu wszystkiego, co tu wspomniano i nie działało! Dzięki i +1!
Yustme

Ten sam problem tutaj. Błąd pojawił się po scaleniu i nie zniknie, dopóki VS2012 nie zostanie ponownie uruchomiony.
StuartQ

1
Dla mnie mogło się zdarzyć, że port był używany przez drugą instancję Visual Studio, która nie skompilowała projektu.
Clay Lenhart,

Pracował również dla mnie. Co za wysypisko.
PAWAN RAJ Shakya

5 lat później VS2017 i wciąż jest to rozwiązanie. : /
Sagiv bg

105

-Dla mnie poprawka polegała na zmianie ścieżki wyjściowej w zakładce kompilacji. Zmieniłem ścieżkę wyjściową na bin\i błąd zniknął.

- Inną poprawką może być nieprawidłowe ustawienie projektu uruchamiania.


8
To był również nasz problem. Wcześniej był ustawiony na coś takiego jak Debug \ x86 \ bin
t3rse

4
HA! To drugi raz od dwóch lat, kiedy byłem w tym artykule z tym problemem, pierwszy raz była to najlepsza odpowiedź, drugi raz była to odpowiedź.
Ben Lesh

1
Dzięki! To mnie też ugryzło. Zmieniłem platformę, aby usunąć ostrzeżenia, a ścieżka wyjściowa uległa zmianie bez mojej wiedzy.
camainc

6
To była dla mnie odpowiednia odpowiedź ... Masz pojęcie, dlaczego Visual Stupido zachowuje się w ten sposób?
andreapier

1
Tak, to było to. Zmiana na `bin` sprawia, że ​​wszystko działa zgodnie z oczekiwaniami. @andreapier: Tak, VS2012 też wydaje się zachowywać tak głupio. Ktoś to naprawi jak najszybciej! :)
teraz ten, którego nie wolno wymieniać.

82

Otrzymywałem ten sam błąd i pomimo robienia wszystkiego, co tu wspomniano, a gdzie indziej nic nie działało. Okazało się, że skopiowałem kod źródłowy global.asax.cs z poprzedniej wersji projektu, który miał inną nazwę. Więc…namespace Test powinno być namespace Test.WebUI. Oczywiście głupi błąd i jestem trochę zawstydzony, aby to napisać! Ale pisząc w nadziei, że podobny błąd popełniony przez kogoś innego może skłonić go do sprawdzenia również tego trywialnego aspektu.


Dzięki, Vipul. Właśnie zrobiłem to samo i pomyślałem, że w rezultacie straciłem dużo pracy. Dopiero zmiana nazwy przestrzeni nazw uratowała mi bekon
xiecs

2
Zrobiłem to samo. Otworzyłem Global.asax w edytorze tekstu i naprawiłem problem z przestrzenią nazw. Dzięki
Kayvan Karim

6
Zrobiłem to samo. Dla rozwinięcia dla kogokolwiek innego: Pierwotnie miałem projekt testowy o nazwie „MvcApplication1”, który został utworzony automatycznie. Następnie dokonałem globalnej zamiany przestrzeni nazw „MvcApplication” na „MyTest”. W Global.asax w notatniku musiałem wtedy zmienić na Inherits = "MyTest.MvcApplication"
PabloInNZ

Gdyby istniał sposób na dawanie złota, zrobiłbym
shanabus

53

Po prostu zrób ręczną kompilację swojego rozwiązania.

Jeśli używasz lokalnych usług IIS, spróbuj usunąć rejestrację witryny w menedżerze usług IIS, a następnie ponownie ją utworzyć ręcznie.


To był dla mnie zwycięzca, usunąłem stronę z repozytorium i skonfigurowałem iis, ale nigdy nie zrobiłem kompilacji w IIS
Anthony Main

31

[Wyodrębniono z pytania]

Jeśli pojawia się ten błąd: „Nie można załadować typu MvcApplication”, spójrz na ścieżkę wyjściową swojego projektu i upewnij się, że jest ustawiony na „bin \”. Problem polega na tym, że AspNetCompiler nie może znaleźć plików, jeśli nie znajdują się one w domyślnej lokalizacji.

Innym efektem ubocznym zmiany folderu wyjściowego jest to, że nie będzie można debugować kodu i pojawia się komunikat informujący, że nie można znaleźć informacji o zestawie.


1
Wydaje się to nieco dziwne, gdy zwykle jest oddzielone pomiędzy różnymi konfiguracjami kompilacji.
nicodemus13

Domyślnie jest on oddzielony, ale wiele osób zmienia je na jeden folder, dzięki czemu wydanie i debugowanie znajdują się w tym samym miejscu dla innego projektu, który odwołuje się do danych wyjściowych (instalatorów itp.).
StingyJack

Zastanawiam się, czy ten problem jest specyficzny dla IIS Express. Tak czy inaczej, to dlatego, że zorientowaliśmy się, ponieważ jest po prostu przykręcony nad jednym z naszych nowych przystawek: bym zmieniła binsię bin\Debugi bin\Releaseale stare pliki były nadal w moim binfolderze więc nie widziałem żadnych problemów. Oczywiście, jeśli wykonasz czystą kasę i skompilujesz te pliki, nie istnieją dla ciebie, więc wybuchnie.
Bart Przeczytaj

15

Miałem ten sam problem i rozwiązałem go, wykonując poniższe czynności

  1. Przejdź do właściwości projektu
  2. Na karcie „Kompilacja” ustaw ścieżkę wyjściową na „bin \”

1
Dziękuję bardzo za to, naprawiłem problem, który miałem z ustawieniem punktów przerwania!
Chris

To działało dla mnie. Odkryłem to sam, ale i tak dziękuję.
Alexandre,

O kurczę! To oszczędza dzień.
ske

14

Ach, to było denerwujące.

Dostałem ten błąd po przerwie w zasilaniu i wróciłem do mojego projektu.

Próbowałem zrestartować VS. Próbowałem ustawić ścieżkę wyjściową na \ bin. Sprawdziłem swoje przestrzenie nazw.

Ale dla mnie zadziałało przebudowanie rozwiązania.

Przebuduj rozwiązanie !!!


13

Moje rozwiązanie: ponieważ stworzyłem problem! Zmieniłem przestrzeń nazw w Global.asax.cs

Musisz także zmienić wartość atrybutu Dziedziczy w pliku Global.asax.


3
Ja też miałem ten problem. Chciałbym, aby Visual Studio zmienił przestrzenie nazw w atrybutach dziedziczących w znacznikach - a także w klasach.
csharpforevermore

To samo tutaj. Podczas zmiany nazw przestrzeni nazw upewnij się, że używasz Shift-Alt-F10 lub kliknij prawym przyciskiem myszy, aby zmienić nazwę, a spowoduje to zaktualizowanie wszystkich wystąpień.
Rob

To działało dla mnie, ale trudno było znaleźć miejsce na wdrożenie rozwiązania. Zrobiłem „Znajdź wszystko”, aby uzyskać dostęp do pliku Global.asax, ponieważ po dwukrotnym kliknięciu na Global.asax w edytorze Visual Studio, otrzymujesz plik Global.asax.cs, który jest kodem pliku .asax. Zwróć uwagę na rozszerzenie .cs. Więc: CTRL-F i wyszukaj Global.asax (bez .cs) i zmień dziedziczenie, aby pasowało do twojej przestrzeni nazw.
GerardV

9

Sprawdź kod za informacją podaną w global.asax. Powinny one poprawnie wskazywać klasę w jej kodzie z tyłu.

próbka global.asax:

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

przykładowy kod za:

   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. Kliknij prawym przyciskiem myszy projekt w rozwiązaniu, które nie działa.
  2. Rozładuj projekt
  3. Załaduj ponownie projekt
  4. Zbuduj projekt
  5. Przebuduj rozwiązanie

5

Może się to również zdarzyć podczas uruchamiania projektu w Visual Studio, jeśli Twój IIS Express ma / obsługuje stary / inny projekt korzystający z tego samego przypisania portów.

Aby to naprawić, możesz zmienić przypisanie portu dla tego projektu lub zamknąć IIS Express.


5

Jeśli prowadzisz hosting w IIS express i otwierasz swój projekt w dwóch różnych lokalizacjach, możesz zobaczyć ten błąd.

Rozwiązaniem jest przejście do Project/Properties/Web/Serversi kliknięcie Create Virtual Directory.


4

Rozwiązaniem było dla mnie kliknięcie prawym przyciskiem myszy projektu Mvc, wybranie właściwości i kliknięcie Utwórz wirtualny katalog.

Pojawiło się okno komunikatu z informacją, że projekt został zmapowany do niewłaściwego folderu (pokazał folder innego projektu TFS . Dał opcję odwzorowania go z powrotem na właściwy folder.


1
Dziękuję za wskazówkę, powodem było dla mnie to, że niedawno przeniosłem tfs. Musiałem odwzorować folder rozwiązania i zmapować go ponownie, aby aplikacja działała!
adhie

4

Miałem już bin/w zakładce kompilacji. Dostałem global.asax z innej kopii projektu, ale to nie wyszło.

Rozwiązaniem, które w końcu działało dla mnie, było usunięcie bin/folderu i utworzenie nowego pustego folderu o tej samej nazwie.


1
To nie daje odpowiedzi na pytanie. Aby skrytykować lub poprosić autora o wyjaśnienie, zostaw komentarz pod jego postem - zawsze możesz komentować własne posty, a gdy będziesz mieć odpowiednią reputację , będziesz mógł komentować każdy post .
JLRishe,

@brasofilo Mógłbym wykonać niewłaściwe połączenie, ale biorąc pod uwagę poważny brak informacji w pierwotnym pytaniu, jest wysoce prawdopodobne, że to nie jest poprawka dla problemu OP, a ta odpowiedź jest na tyle krótka, że ​​można ją dodać jako komentarz. Z drugiej strony pierwotne pytanie zostało zadane dawno temu i jest tu mnóstwo odpowiedzi „to, co dla mnie zadziałało”, więc jest to trudne wezwanie. To pytanie i odpowiedzi mogą wymagać uporządkowania.
JLRishe,

@JLRishe, cóż, tak, to bałagan pytań i odpowiedzi. Ta odpowiedź może być nawet duplikatem drugiego najbardziej uprzywilejowanego, ale nie jestem pewien. Oznaczę Q, prosząc o blokadę minimum 10 powtórzeń.
brasofilo

4

Wiem, że istnieje już wiele rozwiązań tego problemu, ale pomyślałem, że po prostu wspomnę, co dla mnie rozwiązało.

Moja konfiguracja została ustawiona na Debugowanie. Zmieniając go na Release, załatwiłem sprawę.


2
Zmieniłem go na wydanie i zadziałało ... zmieniłem go z powrotem na debugowanie i dalej działało ... dzięki.
Paul Zahra

3

Otrzymałem ten błąd, ponieważ prowadziłem projekt pomimo pewnych błędów czasu kompilacji. Tego nie zauważyłem.


Nie zauważyłem, ponieważ lista błędów bleepity-bleep mówi, że to było SZCZĘŚLIWE !!!! Dziękuję Ci.
CindyH


3

Wpadłem w to. Przeczytałem i przetestowałem wszystkie możliwe wcześniej rozwiązania. Sprawdzanie ścieżki kompilacji, kompilacji, przebudowywania, czyszczenia, restartowanie IIS i VS2015, ponowne instalowanie wszystkich pakietów nuget, kompilowanie ich jeden po drugim itp.

Nagle przypomniałem sobie, że VS przechowuje niektóre pliki tymczasowe ASP w folderach systemowych ... Myślę, że powinienem spróbować, w końcu nie może być gorzej. Więc opróżniłem:

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

I wszystko znów działa ... Dziwne, że ten problem ma tak różne możliwe rozwiązania ...


3

Widziałem to wiele razy w ciągu ostatniej dekady i właśnie to miałem. Istnieje wiele problemów, które powodują ten sam błąd.

Jedną z przyczyn jest zmiana nazwy plików. Jeśli pracujesz z plikami .cshtml, sprawdź wszystkie przestrzenie nazw w tych plikach oraz w pliku Views \ web.config. W przypadku formularzy internetowych zmień nazwę Default.aspx (powiązane pliki .cs i pliki projektantów zostaną automatycznie zmienione). Kod zmienia się, ale linia Dziedziczenia w znacznikach nie. Zmień to ręcznie. Sprawdź dokładnie stronę projektanta. Czasami (VS2005-8?) Strona projektanta nie odzwierciedla zmiany w przestrzeni nazw. Nie widziałem tego w 2010+.

Innym problemem jest to, że wszystko działa w VS lub na lokalnym komputerze, ale nie podczas wdrażania. Może to być spowodowane tym, że środowisko wdrażania nie ma takiej samej struktury. Na przykład błąd występuje, jeśli umieścisz kod w katalogu wirtualnym w folderze aplikacji, ale nie występuje, jeśli utworzysz nowy folder aplikacji i umieścisz w nim wszystkie pliki. Nie rozumiem tego, ponieważ miałem nowy folder podrzędny / wirtualny z tymi samymi uprawnieniami (tak mi się wydaje) i (uważam) pula aplikacji powinna działać tak samo dla wszystkich elementów w danym folderze aplikacji.

W moim przypadku miałem również folder bin ze złożeniami, które są aktualizowane z innych zestawów na serwerze IIS. Ponownie upewnienie się, że są one uruchamiane w osobnym folderze aplikacji, zakończyło się sukcesem.

HTH


2

Ten problem pojawia się za każdym razem, gdy zapisuję plik, który jest dynamicznie kompilowany (ascx, aspx itp.). Czekam około 8-10 sekund, a potem znika. To piekielnie denerwujące.

Pomyślałem, że to może być problem z IIS Express, więc spróbowałem na wbudowanym serwerze deweloperskim i nadal otrzymuję go po zapisaniu pliku. Korzystam z aplikacji MVC, używam również T4MVC, może to jest czynnik ...


2

Miałem ten frustrujący błąd w środowisku programistycznym w Visual Studio i okazało się, że powód był dość głupi. Krótko mówiąc, jeśli masz więcej niż jeden projekt / witrynę internetową w rozwiązaniu: upewnij się, że port, do którego próbujesz uzyskać dostęp do strony internetowej, jest taki sam, jak skonfigurowany we Właściwościach projektu-> Sieć

W moim przypadku błąd został spowodowany, ponieważ korzystałem z innego portu, aby uzyskać dostęp do strony internetowej (w przeglądarce), podczas gdy projektowi w rozwiązaniu został przypisany inny port. Aby wyjaśnić nieco więcej, w moim rozwiązaniu miałem dwa projekty witryn WWW1 (przypisany port 8001 w ISS przez Visual-Studio) i Website2 (przypisany port 8101 w ISS przez Visual-Studio). Mimo że budowałem witrynę WWW1, próbowałem uzyskać dostęp do witryny przy użyciu locahost: 8101.

Teraz, kiedy w końcu zdałem sobie sprawę z problemu, widzę, że komentarz @ StingyJack dotyczy również podobnego problemu.



2

Ponownie miałem ten błąd i żadne z powyższych nie działało dla mnie. Musiałem usunąć następujący węzeł z pliku .csproj:<VisualStudio>....</VisualStudio> . Załadowano ponownie VS i zadziałało.

FYI, VS był w stanie odtworzyć węzeł, a następnie odtworzyłem stronę internetową w IIS (poprzez VS) i działało idealnie.

Mam nadzieję, że to komuś pomoże.


1

Upewnij się, że nie powinieneś otwierać projektu MVC, takiego jak Plik-> Otwórz witrynę sieci Web, użyj Plik-> Otwórz projekt .


1

Dla mnie zadziałało ponowne uruchomienie programu Visual Studio.

Próbowałem ręcznie przebudować, wykonać czyszczenie i przebudowę oraz usunąć folder bin, z których wszystkie nie działały. Moja ścieżka wyjściowa została już ustawiona na bin \


Przeprowadziłem przebudowę na poziomie rozwiązania, ale zauważyłem, że folder bin mojego projektu jest pusty. Zbudowałem tylko projekt i nagle miałem zapełniony folder bin. Uruchomiłem projekt i zadziałał.
MrBoJangles,


1

Może się to zdarzyć bardzo często, jeśli zmienisz przestrzeń nazw. Zwróć nazwę swojej przestrzeni nazw, tak jak kiedyś, i to powinno działać!


1

W niektórych okolicznościach nowe projekty, które tworzysz, nie są domyślnie ustawione na kompilację. Jeśli klikniesz prawym przyciskiem myszy rozwiązanie, wybierz Propertiesi wybierz Configuration Properties| Configurationwęzeł po lewej stronie i upewnij się, że projekt ma znacznik wyboru pod Buildkolumną. W normalnych okolicznościach stwierdziłem, że dzieje się tak domyślnie. W innych okolicznościach (zdarza mi się, że mam nieco złożone rozwiązanie Web Api / Xamarin Android i iOS / Mvc 5, które wykazuje takie zachowanie), znacznik wyboru nie jest obecny.

Jest to związane z innymi odpowiedziami - jeśli zespół twojego projektu internetowego jest niedostępny, pojawia się ten błąd. Ale może to być częsty scenariusz, zwłaszcza że kompilujesz swoje rozwiązanie - projekt po prostu się nie buduje.


1

Wystąpił ten błąd, ponieważ moja kontrola wersji została skonfigurowana tak, aby ignorować folder bin . Bardzo głupie, ale może ktoś inny skorzysta.


1
Czy nie chcesz zignorować folderu bin wraz z obj i innymi rzeczami, które są zbudowane i nie są częścią kodu źródłowego?
MrBoJangles,

Zwykle tak. Ale w tej konkretnej witrynie był to jedyny sposób na przekazywanie elementów na serwer. Prawdopodobnie powinienem był udzielić bardziej ogólnej odpowiedzi.
Brent Wagoner,

Całkowicie rozumiem takie okoliczności.
MrBoJangles,

1

Natknąłem się na ten bardzo problem i widzę tam wszelkiego rodzaju odpowiedzi, ale nic nie zostało zaakceptowane. Po pewnym czasie odkryłem, że samo zbudowanie strony internetowej przed próbą uruchomienia rozwiązało mój problem.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.