W mojej aplikacji .Net 2.0 Asp.net WebForms mam plik Global.asax zawierający następujący kod:
<%@ Application CodeBehind="Global.asax.cs" Inherits="MyNamespace.Global" Language="C#" %>
Jednak podczas budowania pojawia się komunikat o błędzie:
Nie można załadować typu „MyNamespace.Global”.
Wydaje się, że dzieje się tak, ponieważ przestrzeń nazw MyNamespace (zdefiniowana w kodzie pliku Global.asax.cs) nie jest widoczna przez kompilator w pliku Global.asax (nie jest wyświetlana w języku R # intellisence ..). Okazało się, że to bardzo twardy orzech do zgryzienia ... każda pomoc zostanie doceniona!
Uwaga: pliki Global.asax i Global.asax.cs znajdują się w tym samym folderze.
Uwaga 2: Podczas kompilacji z zachęty vs z csc kompiluje się poprawnie
Odpowiedzi:
Jedna sytuacja, z którą się spotkałem, która spowodowała ten problem, to sytuacja, gdy określasz platformę dla kompilacji za pomocą „Konfiguracji kompilacji”.
Jeśli określisz x86 jako platformę kompilacji, program Visual Studio automatycznie przypisze bin / x86 / Debug jako katalog wyjściowy dla tego projektu. Jest to całkowicie poprawne w przypadku innych typów projektów, z wyjątkiem aplikacji internetowych, w których ASP.NET oczekuje, że zestawy zostaną wyprowadzone do folderu Bin.
W mojej sytuacji znalazłem to, że były one wyprowadzane do obu (Bin i Bin / x86 / Debug), z wyjątkiem tego, że niektóre z bibliotek dll, i niewytłumaczalnie najważniejszy, to biblioteka dll aplikacji internetowej, której brakuje w Bin teczka.
To oczywiście spowodowało problem z kompilacją i stąd wyjątek „Nie można załadować typu globalnego”. Czyszczenie rozwiązania i usuwanie zestawów nie miało wpływu na kolejne kompilacje. Moim rozwiązaniem była po prostu zmiana ścieżki wyjściowej w ustawieniach projektu dla aplikacji internetowej na Bin (zamiast bin / x86 / Debug).
źródło
Czy zmieniłeś przestrzeń nazw swojego projektu? Widziałem to czasami, gdy zmieniłem przestrzeń nazw w oknie dialogowym Właściwości projektu, ale program Visual Studio nie zmienił
namespace
deklaracji w istniejących plikach kodu.źródło
Jestem nowy w rozwoju asp .net i stanąłem przed podobnym problemem.
Zaktualizowałem klasę jako
partial
klasę i działało dobrze.źródło
Zrestartowałem Visual Studio i błąd zniknął!
źródło
Oto kolejny dla książek. Wygląda na to, że dzieje się tak, gdy uruchamiasz więcej niż jedną aplikację internetową z tego samego numeru portu.
Zasadniczo mam kilka gałęzi, które odpracowuję, mam gałąź główną i gałąź przejściową oraz gałąź wydania. Kiedy przełączyłem gałąź na gałąź przejściową, zauważyłem, że używa tej samej konfiguracji adresu portu, więc zdecydowałem się to zmienić. Następnie otrzymałem kolejne ostrzeżenie, że ta rezerwacja powoduje konflikt z inną skonfigurowaną aplikacją. Serwer IIS Express jest wrażliwy na to i z jakiegokolwiek powodu psuje konfigurację.
Po prostu wybierając trzeci port, na który nie ma wpływu, problem ten zniknął, ponieważ następnie mapuje port do nowego mapowania katalogu (moje gałęzie są inaczej zlokalizowane na dysku). Zauważyłem to, ponieważ próbowałem zmienić nazwę typu wskazywaną przez
Global.asax
ale nazwa typu pozostała niezmieniona nawet po ponownym uruchomieniu serwera, więc wyraźnie kod, który zmieniłem, nie został odzwierciedlony we wdrożeniu IIS Express.Dlatego zanim stracisz zbyt dużo snu, spróbuj zmienić numer portu IIS, który jest obecnie używany do uruchamiania projektu sieci Web.
źródło
Działa dobrze dla mnie w VS 2015. Teraz mogę użyć wydarzenia globalnego. Mój
Global.asax
plik ma tę linięI tworzę plik klasy,
Global.asax.cs
który jest wAppCode
folderze, który wygląda jakMam nadzieję, że to pomoże
źródło
Sprawdź działanie kompilacji Global.asax.cs. Powinien być ustawiony na Compile.
W Eksploratorze rozwiązań kliknij prawym przyciskiem myszy Global.asax.cs i przejdź do Właściwości. W okienku Właściwości ustaw akcję kompilacji ( bez debugowania).
Wygląda na to, że VS 2008 nie zawsze domyślnie dodaje poprawnie pliki .asax (.cs).
źródło
Wystąpił podobny błąd, gdy miałem plik
jako dziecko (pierwsze dziecko)
tag w moim pliku Web.config . Umieściłem tagi w moim web.config, aby zapobiec dziedziczeniu konfiguracji w aplikacji wdrożonej w „Domyślnej witrynie sieci Web” w usługach IIS.
źródło
W mojej sytuacji było to związane z projektem typu Witryna / Aplikacja internetowa. Niedawno przenieśliśmy się do MVC i musieliśmy zmienić to na aplikację internetową.
Rozwiązanie było więc proste: wybierz swoją witrynę internetową w programie Solution Explorer i usuń ją z rozwiązania, a następnie kliknij prawym przyciskiem myszy rozwiązanie i wybierz opcję Dodaj -> Istniejący projekt ( nie witryna sieci Web ), skompiluj ponownie witrynę internetową.
źródło
Stary post, ale pojawia się ten błąd podczas próby konwersji z projektu witryny do projektu aplikacji internetowej.
Postępuj zgodnie z instrukcjami w tym łączu . Nadal mam błąd global.asax, ale wszystko, co zrobiłem, to usunąć go i ponownie dodać, klikając prawym przyciskiem myszy projekt w programie Visual Studio i wybierając opcję Dodaj nowy element. Dodaj plik global.asax i zadziałało.
źródło
Niestety żaden z nich nie zadziałał dla mnie. Poprawka, którą znalazłem, była bardziej specyficzna dla programowania, w szczególności debugowania na komputerze lokalnym. Niestety, tak naprawdę nie rozwiązuje to problemu w sposób, na jaki liczyłem, ale jeśli nie masz już rozumu, może to sprawić, że znów będziesz biegał.
TL; DR: we właściwościach projektu na karcie sieci Web w obszarze Serwery wybierz opcję Użyj lokalnego serwera sieci Web IIS. Adres,
był już wypełniony (mam IIS7, .NET 4.0). Pierwotnie wybrano opcję „Użyj serwera programistycznego programu Visual Studio” ze ścieżką wirtualną „/”
To, co mnie naprawdę zastanawia, to fakt, że nic innego nie działało, przejrzałem wszystkie sugestie, które mogłem znaleźć na SO, i nic nie zadziałało. Dziwne jest to, że błąd (najwyraźniej minęło kilka miesięcy od ostatniego spojrzenia) objawił się, gdy dodałem nowy plik ascx, który był podobny do istniejącego, który został dodany ze starego projektu .net 2.0 (chyba) co pozwoliłoby na niestandardowe zarządzanie użytkownikami z poziomu aplikacji. Świetnie działało przez długi czas, dopóki nie spróbowałem dodać tego nowego pliku. Po dodaniu go i zobaczeniu błędu natychmiast cofnąłem wszystkie zmiany, ale błąd Global.ascx nie zniknął, nawet nie zdmuchując całego projektu i ponownie pobierając najnowsze informacje z kontroli źródła.
źródło
Przekonwertowałem swoje rozwiązanie z VS2003 na VS2010 i miałem problemy z konwersją projektu aplikacji internetowej.
Doświadczyłem dokładnie tego samego problemu i żadna z odpowiedzi nie pomogła.
Dla mnie zadziałało:
wydawałoby się, że problemy, które miałem podczas konwersji, z jakiegoś powodu spowodowały usunięcie projektu aplikacji internetowej z kompilacji.
Mam nadzieję, że ta odpowiedź pomoże każdemu, kto ma ten sam problem ...
źródło
Jeśli przebudowujesz lub zmieniasz projekt i przenosisz pliki ze starego, upewnij się, że zaznaczyłeś blok Dziedzicz swojego pliku global. W moim przypadku poprzedni projekt / rozwiązanie nazywał się intranet i odtworzyłem go jako Intranet, ale kiedy przeniosłem pliki, nie podobały mu się małe litery (duh). Po prostu przejrzyj nazwy plików.
źródło
Zmień identyfikator GUID zespołu. To rozwiązuje wiele WIELE problemów, które znalazłem.
źródło
Miałem podobne problemy, gdy otrzymywałem ten błąd w projekcie.
Po jakimś czasie podejrzewam funkcję z możliwymi błędami w klasie ... później komentując, że ta konkretna funkcja mój problem został rozwiązany.
Nie wiem, dlaczego program Visual Studio nie dał mi tego konkretnego błędu w czasie debugowania. Ale ten błąd może wystąpić z powodu błędów w pliku klasy.
źródło
Ta praca dla mnie: Po pierwsze: wydaje się, że bez względu na to, co powiedziałeś do Visual Studio, ide zawsze szuka pliku w: bin (dla aplikacji internetowej i oczywiście w moim przypadku) Więc nawet kiedy powiedziałem do Visual Studio określonej ścieżki do załadowania pliku, IDE nadal szuka złej ścieżki. Więc zmieniam w: Build / Configuration Manager typ danych wyjściowych na: Release (poprzednio czyściłem rozwiązanie, nawet ręcznie), więc po utworzeniu pliku .dll przenoszę go ręcznie do folderu „bin” w projekcie / rozwiązaniu teczka. Mam nadzieję, że to będzie pomocne !!
źródło
W moim przypadku to z powodu mojego docelowego procesora (x64) zmieniłem go na x86, wyczyściłem projekt, zrestartowałem VS (2012) i odbudowałem projekt; potem zniknął.
źródło
Kiedy ostatnio napotkałem ten problem, próbowałem wszystkiego, o czym tutaj wspomniano, ale bezskutecznie. Po wyrwaniu sobie włosów postanowiłem spróbować usunąć całą bazę kodu (tak, dość desperacko!), A następnie ponownie pobrać wszystko z mojego repozytorium kodu. Po wykonaniu tego wszystko znów działało dobrze.
Wydaje się to skrajnym rozwiązaniem, ale pomyślałem, że umieszczę je tutaj, ponieważ nie zostało to wcześniej wspomniane w tym wątku.
(Zauważ, że innym razem napotkałem ten problem, kiedy Global.asax dziedziczył po komponencie, który musiał być zarejestrowany na komputerze-hoście. Brakowało tego, dlatego mam ten sam problem).
TL; DR; Jeśli wszystkie odpowiedzi w tym wątku nie działają dla Ciebie, spróbuj usunąć, a następnie ponownie pobrać całą bazę kodu!
źródło
Kilka razy zetknąłem się z tym problemem iw każdym przypadku przebudowywałem komputer lub przełączałem się na nowy komputer. Moim pierwszym krokiem (poza aktualizacją maszyny i instalacją Visual Studio) jest ściągnięcie moich projektów z Gita i przetestowanie ich.
Za każdym razem napotykam ten błąd, ponieważ przed kompilacją próbowałem uzyskać dostęp do kodu lokalnego. Widzisz, mam konfigurację Git i Subversion, aby ignorować moje foldery bin / build, więc po ściągnięciu z mojego repozytorium zapomniałem uruchomić kompilację, która pobiera wymagane pakiety z Nuget (ponieważ mam Git / SVN je również ignoruj) i tworzy Biblioteki DLL potrzebne do rzeczywistego uruchomienia mojej aplikacji.
Wątpię, że rozwiąże to większość problemów ludzi, ale nie widziałem tego na liście potencjalnych rozwiązań, więc pomyślałem, że to dodam.
źródło
W moim przypadku dodałem Global.asax do projektu WCF, aby z nim eksperymentować, ale zdecydowałem się go usunąć. Usunąłem go z Eksploratora rozwiązań, ale ponieważ nadal znajdował się w folderze, potok nadal go znajdował i powodował ten błąd.
Usunąłem Global.ASAX i GLobal.asax.cs z systemu plików i to rozwiązało problem.
źródło
Pracując nad grą deweloperską od prawie 20 lat, ten kasztan wciąż nęka mnie w wielu projektach.
W związku z tym dzisiaj, gdy ponownie doświadczam tego samego problemu, w przypadku innego projektu, postanowiłem zbadać dalej i uważam, że jest to związane z lokalizacją folderu Bin ... a dokładniej ze ścieżką wyjściową folderu bin.
Dla mnie w przypadku prostej aplikacji internetowej opartej na usługach skonfigurowanej do uruchamiania / debugowania za pośrednictwem usług IIS zmiana ścieżki wyjściowej z bin \ debug na bin \ rozwiązała problem
Mam nadzieję, że to pomoże.
źródło
Byłem oszołomiony tym samym problemem. Próbowałem usunąć i i
global.asax
(przed dodaniem zamknięty VS2010). Oczyszczono projekt / rozwiązanie, sprawdziłem, czy nie ma zmian w konfiguracji aplikacji internetowej i innych rzeczy, które działały dla innych osób tutaj w wątkach SO. W końcu wyczyściłem rozwiązanie, usunąłem foldery bin / obj i zatrzymałem wszystkie działające serwery programistyczne VS2010, a następnie cofnąłem wszystkie zmiany i stwierdziłem, że aplikacja działa ponownie. Poprawiłem te same rzeczy i teraz działa dobrze.Znowu się zdarzyło i tym razem to rozwiązanie zadziałało.
źródło
przejdź do Menedżera konfiguracji we właściwościach rozwiązania. Następnie upewnij się, że wszystkie projekty i powstanie, nie będzie problemem.
źródło
Musiałem usunąć (zduplikować) pliki z dysku, które nie były uwzględnione w projekcie. Wygląda na to, że duplikaty zostały spowodowane nieudaną zmianą nazwy. Nazwy plików były różne, ale ten sam kod.
Po usunięciu wszystkich plików oof. * Udało mi się przeskanować.
źródło
w moim przypadku był to IISExpress wskazujący na ten sam port co IIS, aby go rozwiązać
i wyszukaj port, znajdziesz
<site>...</site>
tag, który musisz usunąć lub skomentowaćźródło
Miałem ten problem podczas wdrażania tylko na serwerze prod. W moich innych środowiskach to działa ... Po prostu usunąłem rzeczy z folderu bin, a następnie opublikowałem je ponownie i po tym działa.
źródło
Jeśli używasz programu Visual Studio, prawdopodobnie próbujesz uruchomić aplikację w trybie wydania, spróbuj zmienić ją na tryb debugowania.
źródło
Próbowałem odbudować rozwiązanie i wyczyścić pliki tymczasowe ASP.NET bez powodzenia.
Ale po uruchomieniu IISRESET błąd zniknął.
Aktualizacja : ponownie miałem ten sam problem 1 miesiąc później. Zauważyłem, że MyWebsite.DLL istnieje w folderze bin, ale nie istnieje w tymczasowych plikach ASP.NET (C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Temporary ASP.NET Files). Wypróbowałem kilka rzeczy, które są sugerowane w tym i „Komunikat błędu parsera: nie można załadować typu” w pytaniach Global.asax (właściwie zapomniałem o własnej odpowiedzi), ale błąd zniknął ponownie dopiero po IISRESET
źródło
Cóż, w moim przypadku VS 2017 przyczyną tego problemu było lekkie obciążenie rozwiązania. Wyłączyłem go i ponownie uruchomiłem VS, a następnie ponownie zbudowałem moje rozwiązanie i problem zniknął.
źródło
Chciałem tylko dodać moje dwa centy. Otrzymałem ten sam błąd i bezskutecznie wypróbowałem wszystkie sugestie. Moja sytuacja jest prawdopodobnie inna?
Okazuje się, że automatycznie generowany plik „AssemblyInfo.cs” zawierał dodatkowe spacje, co uniemożliwiało mi uruchomienie aplikacji internetowej (poprzez debugowanie). Oto jak wyglądał plik:
Po zabiciu przestrzeni w AssemblyCompany i AssemblyCopyright, w końcu mogłem zbudować i uruchomić projekt.
Obserwowane w następującym środowisku: --Visual Studio 2017 Community w wersji 15.3.0 - Win 7 x64 Enterprise - Nowy projekt> Visual C #> Web> ASP.NET Web Application> Web Forms
źródło