"Typ [Namespace] .Global konnte nicht geladen werden" verursachte mir Kummer


106

In meiner .NET 2.0 Asp.net WebForms-App habe ich meine Global.asax mit dem folgenden Code:

<%@ Application CodeBehind="Global.asax.cs" Inherits="MyNamespace.Global" Language="C#" %>

Beim Erstellen erhalte ich jedoch eine Fehlermeldung:

Typ 'MyNamespace.Global' konnte nicht geladen werden.

Dies scheint daran zu liegen, dass der MyNamespace-Namespace (definiert im Code hinter der Datei Global.asax.cs) vom Compiler in der Datei Global.asax nicht gesehen wird (wird in R # Intellisence nicht angezeigt ..). Es stellte sich heraus, dass dies eine sehr harte Nuss war ... jede Hilfe wird geschätzt!

Hinweis: Die Dateien Global.asax und Global.asax.cs befinden sich im selben Ordner.

Hinweis 2: Beim Kompilieren von der vs-Eingabeaufforderung mit csc wird ok kompiliert


Funktionieren andere Seiten in der App? Manchmal passiert dies, wenn der Webserver für die Ausführung von 1.1 konfiguriert ist, die App jedoch für 2.0 komponiert ist
Noon Silk

Ja, 'Target Framework' ist 2.0
gkdm

Antworten:


162

Eine Situation, die dieses Problem verursacht hat, ist die Angabe der Plattform für einen Build über "Build-Konfiguration".

Wenn Sie x86 als Build-Plattform angeben, weist Visual Studio automatisch bin / x86 / Debug als Ausgabeverzeichnis für dieses Projekt zu. Dies gilt auch für andere Projekttypen, mit Ausnahme von Webanwendungen, bei denen ASP.NET erwartet, dass die Assemblys in den Ordner Bin ausgegeben werden.

Was ich in meiner Situation fand, war, dass sie in beide ausgegeben wurden (Bin und Bin / x86 / Debug), mit der Ausnahme, dass einige der DLLs und unerklärlicherweise die wichtigste, die Ihre Webanwendungs-DLL ist, im Bin fehlen Ordner.

Dies verursachte offensichtlich ein Kompilierungsproblem und daher die Ausnahme "Typ konnte nicht geladen werden". Das Reinigen der Lösung und das Löschen der Baugruppen machte für nachfolgende Builds keinen Unterschied. Meine Lösung bestand darin, einfach den Ausgabepfad in den Projekteinstellungen für die Webanwendung in Bin (anstelle von bin / x86 / Debug) zu ändern.


13
Außerdem: Versuchen Sie, VS zu schließen und wieder zu öffnen. Wenn Sie einen integrierten Debugging-Server verwenden, wird möglicherweise eine andere Website ausgeführt. Durch Öffnen / Schließen werden die lokalen Host-Ports neu registriert.
BradLaney

1
In meinem Fall wollte es die Projektausgabe in inetpub \ wwwroot \ myproject \ bin ablegen, aber ich hatte iisexpress so konfiguriert, dass es in myProject \ bin aussieht. Nur das Ändern des Ausgabepfads löste das Problem.
Shindigo

In meinem Fall hatte ich eine DLL, die hätte enthalten sein sollen, aber aus irgendeinem Grund nicht auf "lokal kopieren" eingestellt war. Dies verursachte ein ähnliches Kompilierungsproblem wie in dieser Antwort angegeben.
HockeyJ

Danke, Stantona. Das hat bei mir funktioniert und gerade rechtzeitig, damit ich nach Hause gehen kann.
Bill Norman

3
Das Ändern des Ausgabepfads des Projekts in den Ordner bin hat das Problem behoben. Danke, dass du meinen Tag gerettet hast!
Tunahan

18

Haben Sie den Namespace Ihres Projekts geändert? Ich habe dies gelegentlich gesehen, als ich den Namespace im Dialogfeld "Projekteigenschaften" geändert habe, Visual Studio jedoch die namespaceDeklaration in vorhandenen Codedateien nicht geändert hat .


Was denkst du sollte ich tun?
gkdm

1
Überprüfen Sie den Namespace in Ihrer CS-Datei und stellen Sie sicher, dass er mit dem in der Asax-Datei deklarierten übereinstimmt. Mein Verdacht ist, dass sie anders sein werden ...
PhilPursglove

Ich bin mir dann nicht sicher. Im Moment kann ich nur vorschlagen, den Inhalt von Namespaces in Ihrer Assembly mit ILDASM neu zu erstellen und zu überprüfen.
PhilPursglove

Danke, das war die Lösung, die mir geholfen hat. Ich werde Resharper verwenden, um nach allen Namespaces in meiner Lösung zu suchen.
Leonard

Ich hatte gerade Folgendes: In einem MVC 5-Projekt (nicht, dass es wichtig ist) und ich habe den Projektnamespace geändert, aber vergessen, die Datei Global.asax (und den Ordner App_Start) zu ändern. Unabhängig von der Erfahrung, manchmal bekommen Sie die dummen Versehen immer noch.
Jason Snelders

15

Ich bin neu in der Entwicklung von asp .net und hatte ein ähnliches Problem.

Ich habe die Klasse als partialKlasse aktualisiert und es hat gut funktioniert.

public partial class Global : System.Web.HttpApplication

1
Ich bin mir nicht sicher, warum meine globale Datei ohne dies gelandet ist, aber das war das Problem für mich, danke!
Ginja

9

Ich habe Visual Studio neu gestartet und der Fehler war verschwunden!


2
das gleiche hat bei mir funktioniert. Stellen Sie sicher, dass Sie ALLE geöffneten Visual Studios schließen.
Alansiqueira27

5

Hier ist noch eine für die Bücher. Es scheint, dass dies passiert, wenn Sie mehr als eine Webanwendung von derselben Portnummer aus starten.

Grundsätzlich habe ich ein paar Zweige, an denen ich arbeite, ich habe einen Hauptzweig und einen Staging-Zweig und einen Release-Zweig. Als ich den Zweig zum Staging-Zweig wechselte, bemerkte ich, dass er dieselbe Portadressenkonfiguration verwendete, und entschied mich, dies zu ändern. Ich habe dann eine weitere Warnung erhalten, dass diese Reservierung mit einer anderen konfigurierten Anwendung in Konflikt steht. Der IIS Express-Server ist diesbezüglich sensibel und blockiert aus irgendeinem Grund die Konfiguration.

Durch einfaches Auswählen eines dritten nicht betroffenen Ports wurde dieses Problem behoben, da der Port dann einer neuen Verzeichniszuordnung zugeordnet wird (meine Zweige befinden sich auf der Festplatte anders). Ich habe dies bemerkt, weil ich versucht habe, den Typnamen zu ändern, auf den verwiesen wird Global.asax, der Typname jedoch auch nach dem Neustart des Servers unverändert blieb. Daher wurde der von mir geänderte Code in der IIS Express-Bereitstellung nicht berücksichtigt.

Versuchen Sie daher, die IIS-Portnummer zu ändern, die derzeit zum Ausführen des Webprojekts verwendet wird, bevor Sie zu viel Schlaf verlieren.


5
  1. Klicken Sie mit der rechten Maustaste auf Projektlösung und wählen Sie Stapelerstellung.
  2. Wählen Sie dann Ihren Projektnamen und Reinigen und neu erstellen.

Funktioniert gut für mich in VS 2015. Jetzt kann ich das globale Ereignis verwenden. Meine Global.asaxDatei hat diese Zeile

<%@ Application Language="C#" CodeBehind="~/App_Code/Global.asax.cs" Inherits="Global" %>

Und ich mache eine Klassendatei Global.asax.cs, die sich in einem AppCodeOrdner befindet, der aussieht

public partial class Global : HttpApplication
{
    public Global()
    {
        //
        // TODO: Add constructor logic here
        //
    }
}

Ich hoffe das wird helfen


3

Überprüfen Sie die Build-Aktion von Global.asax.cs. Es sollte auf Kompilieren gesetzt sein.

Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf Global.asax.cs und gehen Sie zu Eigenschaften. Legen Sie im Eigenschaftenbereich die Build-Aktion fest ( ohne zu debuggen).

Es scheint, dass VS 2008 die ASAS-Dateien (CS-Dateien) standardmäßig nicht immer korrekt hinzufügt.


3

Ich habe einen ähnlichen Fehler beim a

<clear/>

Tag als Kind (das erste Kind) der

<assemblies>

Tag in meiner Web.config . Ich habe die Tags in meine web.config eingefügt, um die Vererbung der Konfiguration in einer Anwendung zu verhindern, die unter der Standardwebsite in IIS bereitgestellt wird.


Dies hat mich definitiv in die richtige Richtung gelenkt. Am Ende hatte ich <clear /> in das übergeordnete Verzeichnis gestellt, da dies ein leerer Platzhalter war. Ich glaube, das eigentliche Problem war, dass Assemblys gelöscht wurden, auf die meine Anwendung verwiesen hat, wodurch das Laden der Anwendungsassembly verhindert wurde.
Doug Lampe

Das habe ich auch erlebt - ausgewählte Baugruppen explizit zu entfernen, anstatt die Liste zu löschen, hat gut funktioniert.
Arve Systad

2

In meiner Situation bezog es sich auf den Website- / Webanwendungstyp des Projekts. Wir sind kürzlich zu MVC gewechselt und mussten es in Webanwendung ändern.

Die Lösung war also einfach: Wählen Sie Ihre Website im Projektmappen-Explorer aus und entfernen Sie sie aus der Lösung. Klicken Sie dann mit der rechten Maustaste auf die Lösung und wählen Sie Hinzufügen -> Vorhandenes Projekt ( nicht Website ). Kompilieren Sie die Website neu.


2

Alter Beitrag, aber ich gehe diesen Fehler, wenn ich versuche, von einem Website-Projekt zu einem Webanwendungsprojekt zu konvertieren.

Folgen Sie den Anweisungen auf diesem Link . Ich habe immer noch den Fehler global.asax erhalten, aber alles, was ich getan habe, war, ihn zu löschen und wieder hinzuzufügen, indem ich mit der rechten Maustaste auf das Projekt in Visual Studio geklickt und die Option Neues Element hinzufügen ausgewählt habe. Fügen Sie die Datei global.asax hinzu und es hat funktioniert.


2

Nichts davon hat leider bei mir funktioniert. Das Update, das ich gefunden habe, war spezifischer für die Entwicklung, insbesondere für das Debuggen auf Ihrem lokalen Computer. Leider behebt es das Problem auch nicht so, wie ich es mir erhofft hatte, aber wenn Sie am Ende Ihres Witzes sind, könnte dies Sie wieder zum Laufen bringen.

TL; DR: Wählen Sie in den Projekteigenschaften auf der Registerkarte Web unter Server die Option Lokalen IIS-Webserver verwenden aus. Die Anschrift,

http://localhost/MyApp" 

wurde bereits ausgefüllt (ich habe IIS7, .NET 4.0). Ursprünglich wurde "Visual Studio Development Server verwenden" mit dem virtuellen Pfad "/" ausgewählt.

Was mich wirklich verwirrt, ist die Tatsache, dass nichts anderes funktioniert hat. Ich habe alle Vorschläge durchgesehen, die ich auf SO finden konnte, und nichts würde funktionieren. Das Seltsame ist, dass der Fehler (anscheinend ist es ein paar Monate her, seit ich ihn das letzte Mal gesehen habe) aufgetreten ist, als ich eine neue ASCX-Datei hinzugefügt habe, die einer vorhandenen ähnelt, die aus einem alten .net 2.0-Projekt (glaube ich) hinzugefügt wurde Dies würde eine benutzerdefinierte Benutzerverwaltung innerhalb der Anwendung ermöglichen. Es hat wunderbar lange funktioniert, bis ich versuchte, diese neue Datei hinzuzufügen. Nachdem ich es hinzugefügt und den Fehler gesehen hatte, habe ich alle Änderungen umgehend zurückgesetzt, aber der Global.ascx-Fehler wurde nicht behoben, nicht einmal das gesamte Projekt wurde weggeblasen und die neueste Version der Quellcodeverwaltung wurde wiederhergestellt.


2

Ich hatte meine Lösung von VS2003 auf VS2010 konvertiert und Probleme beim Konvertieren des Webanwendungsprojekts.

Ich hatte genau das gleiche Problem und keine der Antworten funktionierte für mich.

Was für mich funktioniert hat war:

  • Klicken Sie mit der rechten Maustaste auf die Lösung und wählen Sie Configuration Manager
  • Sehen Sie sich jede der Konfigurationen in der Dropdown-Liste "Aktive Lösungskonfiguration" an.
  • Nehmen Sie die Webanwendung in den Build auf, indem Sie das Kontrollkästchen "Build" aktivieren.

Es scheint, dass die Probleme, die ich während der Konvertierung hatte, das Webanwendungsprojekt aus irgendeinem Grund aus dem Build entfernt hatten.

Hoffentlich hilft diese Antwort allen anderen, die das gleiche Problem haben ...


1

Wenn Sie ein Projekt neu erstellen oder ändern und Dateien von einem alten verschieben, überprüfen Sie den Inherit-Block Ihres globalen Projekts. In meinem Fall hieß das frühere Projekt / die frühere Lösung Intranet, und ich hatte es als Intranet neu erstellt, aber als ich über die Dateien ging, mochte es die Kleinbuchstaben (duh) nicht. Sehen Sie sich einfach die Namen der Dateien allgemein an.


1

Ändern Sie die GUID der Baugruppe. Dies behebt viele VIELE Probleme, die ich gefunden habe.


Wie änderst du die GUID?
Drew Chapin

1

Ich hatte ähnliche Probleme, bei denen ich diesen Fehler bei einem Projekt erhielt.

Could not load type [Namespace].Global
Error in Line 1   etc etc

Nachdem ich einige Zeit verbracht habe, vermute ich eine Funktion mit möglichen Fehlern in einer Klasse. Später, wenn ich diese bestimmte Funktion kommentiere, wird mein Problem gelöst.

Ich weiß nicht, warum Visual Studio mir diesen spezifischen Fehler beim Debuggen nicht gegeben hat. Dieser Fehler kann jedoch aufgrund einiger Fehler in der Klassendatei auftreten.


1

Diese Arbeit für mich: Das erste: Es scheint, dass, egal was Sie zu Visual Studio gesagt haben, die Idee immer in der Datei nachschaut: bin (für Web-App und natürlich in meinem Fall) Also, selbst wenn ich zu Visual Studio sagte Bei einem bestimmten Pfad zum Laden der Datei sucht die Idee nach dem falschen Pfad. Also ändere ich im: Build / Configuration Manager den Ausgabetyp in: Release (vorher bereinige ich die Lösung sogar manuell). Als die Datei .dll erstellt wurde, wechselte ich manuell in den Ordner "bin" unter dem Projekt / der Lösung Ordner. Hoffe das wird hilfreich sein !!


1

In meinem Fall habe ich es aufgrund meines Zielprozessors (x64) in x86 geändert, das Projekt bereinigt, VS neu gestartet (2012) und das Projekt neu erstellt. dann war es weg.


1

Als ich zuletzt auf dieses Problem gestoßen bin, habe ich alles versucht, was hier erwähnt wurde, aber ohne Erfolg. Nachdem ich mir die Haare ausgerissen hatte, beschloss ich, meine gesamte Codebasis zu löschen (ja, ziemlich verzweifelt!) Und dann alles erneut aus meinem Code-Repository herunterzuladen. Danach hat alles wieder gut funktioniert.

Scheint eine extreme Lösung zu sein, dachte aber nur, ich würde sie hier aufnehmen, da sie in diesem Thread noch nicht erwähnt wurde.

(Beachten Sie, dass dieses Problem das andere Mal aufgetreten ist, als Global.asax von einer Komponente geerbt hat, die auf dem Hostcomputer registriert werden musste. Dies fehlte, daher habe ich dasselbe Problem.)

TL; DR; Wenn alle Antworten in diesem Thread für Sie nicht funktionieren, löschen Sie Ihre gesamte Codebasis und laden Sie sie erneut herunter!


1

Ich bin einige Male auf dieses Problem gestoßen und habe jeweils einen Computer neu erstellt oder auf einen neuen Computer umgestellt. Mein erster Schritt (neben dem Aktualisieren des Computers und der Installation von Visual Studio) besteht darin, meine Projekte von Git herunterzuziehen und zu testen.

Ich habe diesen Fehler jedes Mal festgestellt, weil ich versucht habe, auf meinen lokalen Code zuzugreifen, bevor ich ihn kompiliert habe. Sie sehen, ich habe Git- und Subversion-Setup, um meine bin / build-Ordner zu ignorieren. Nach einem Pull aus meinem Repository habe ich vergessen, einen Build auszuführen, der die erforderlichen Pakete aus Nuget abruft (da Git / SVN diese ebenfalls ignoriert) und das erstellt DLLs mussten tatsächlich meine App ausführen.

Ich bezweifle, dass dies die Probleme der meisten Menschen lösen wird, aber ich habe es nicht auf der Liste der möglichen Lösungen gesehen, also dachte ich, ich würde es hinzufügen.


1

In meinem Fall hatte ich Global.asax zu einem WCF-Projekt hinzugefügt, um damit zu experimentieren, aber beschlossen, es zu entfernen. Ich habe es aus dem Projektmappen-Explorer entfernt, aber da es sich noch im Ordner befand, fand die Pipeline es immer noch und verursachte diesen Fehler.

Ich habe Global.ASAX und GLobal.asax.cs aus dem Dateisystem entfernt und dadurch den Fehler behoben.


Dies hat es für mich gelöst, danke, aber ich möchte in Zukunft auch für andere hinzufügen, dass ich in meinem Fall Global.asax nie zu meinem Projekt hinzugefügt habe. Wie hier erwähnt, befanden sich die Dateien global.asax und global.asax.cs in meinem Dateisystem. Als ich sie löschte, verschwand der Fehler.
Stackonfire

1

Diese Kastanie, die seit fast 20 Jahren im Entwicklungsspiel ist, hat mich in mehreren Projekten immer wieder geplagt.

Als ich heute das gleiche Problem gegen ein anderes Projekt hatte, habe ich mich entschlossen, weitere Untersuchungen durchzuführen, und ich glaube, dass dies mit dem Speicherort des Bin-Ordners zusammenhängt ... oder genauer gesagt mit dem Ausgabepfad des Bin-Ordners.

Für eine einfache dienstbasierte Webanwendung, die zum Ausführen / Debuggen über IIS konfiguriert ist, wurde der Ausgabepfad von bin \ debug in bin \ geändert , wodurch das Problem behoben wurde

Projekt> Eigenschaften> Erstellen> Ausgabepfad

Hoffe ernsthaft, dass dies hilft.


0

Ich war verwirrt von dem gleichen verdammten Problem. Ich habe versucht, und und zu entfernen global.asax(VS2010 vor dem Hinzufügen geschlossen). Das Projekt / die Lösung wurde bereinigt, auf Änderungen in der Webanwendungskonfiguration und andere Dinge überprüft, die für andere Personen hier in SO-Threads funktioniert hatten. Schließlich habe ich die Lösung bereinigt, die Ordner bin / obj gelöscht und alle laufenden VS2010-Entwicklungsserver gestoppt. Dann habe ich alle Änderungen zurückgesetzt und festgestellt, dass die Anwendung erneut ausgeführt wurde. Ich habe die gleichen Dinge überarbeitet und jetzt funktioniert es gut.

Ist wieder passiert und diesmal hat diese Lösung für mich funktioniert.


0

Wechseln Sie unter Eigenschaften für Ihre Lösung zum Konfigurationsmanager. Stellen Sie dann sicher, dass alle Projekte erstellt werden, und dies wird kein Problem sein.


0

Ich musste Dateien von der Festplatte löschen (duplizieren), die nicht im Projekt enthalten waren. Es sieht so aus, als ob die Duplikate durch eine fehlgeschlagene Umbenennung verursacht wurden. Die Dateinamen waren unterschiedlich, aber der gleiche Code.

Nachdem ich alle oof. * -Dateien gelöscht hatte, konnte ich scannen.

  • foo.aspx
  • foo.aspx.cs
  • foo.aspx.designer.cs
  • oof.aspx
  • oof.aspx.cs
  • oof.aspx.designer.cs

0

In meinem Fall zeigte IISExpress auf denselben Port wie IIS, um das Problem zu lösen

C:\Users\Your-User-Name\Documents\IISExpress\config\applicationhost.config

Wenn Sie nach dem Port suchen, finden Sie ein <site>...</site>Tag, das Sie entfernen oder kommentieren müssen


0

Ich hatte dieses Problem nur bei der Bereitstellung auf dem Produktserver. In meinen anderen Umgebungen funktioniert es ... Ich habe gerade Inhalte im Ordner bin gelöscht und dann erneut veröffentlicht, und danach funktioniert es.


0

Wenn Sie Visual Studio verwenden, versuchen Sie wahrscheinlich, die Anwendung im Release-Modus auszuführen und in den Debug-Modus zu ändern.


0

Ich habe erfolglos versucht, die Lösung neu zu erstellen und temporäre ASP.NET-Dateien zu löschen.
Nach dem Ausführen von IISRESET verschwand der Fehler.

Update : Ich hatte das gleiche Problem 1 Monat später wieder. Ich habe festgestellt, dass MyWebsite.DLL im Ordner bin vorhanden ist, jedoch nicht in temporären ASP.NET-Dateien (C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Temporäre ASP.NET-Dateien). Ich habe einige Dinge ausprobiert, die zu diesem Thema und "Parser-Fehlermeldung: Typ konnte nicht geladen werden" in Global.asax- Fragen vorgeschlagen wurden (ich habe meine eigene Antwort tatsächlich vergessen), aber der Fehler ist erst nach IISRESET wieder verschwunden


0

In meinem Fall VS 2017 verursachte die geringe Lösungslast dieses Problem. Ich habe es deaktiviert und VS neu gestartet, dann meine Lösung neu erstellt und das Problem behoben.


2
Was ist "die leichte" Lösung?
Fandango68

0

Ich wollte nur meine zwei Cent hinzufügen. Ich habe den gleichen Fehler erhalten und alle Vorschläge ohne Erfolg ausprobiert. Meine Situation ist wahrscheinlich anders?

Es stellte sich heraus, dass eine automatisch generierte "AssemblyInfo.cs" -Datei einige überflüssige Leerzeichen enthielt, die mich daran hinderten, die Web-App (per Debug) zu starten. So sah die Datei aus:

[assembly: AssemblyTitle("WebApplication2")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("

            ")]
[assembly: AssemblyProduct("WebApplication2")]
[assembly: AssemblyCopyright("Copyright © 

             2017")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]

Nachdem ich die Leerzeichen in AssemblyCompany und AssemblyCopyright getötet hatte, konnte ich das Projekt endlich erstellen und starten.

In der folgenden Umgebung beobachtet: --Visual Studio 2017 Community Version 15.3.0 - Win 7 x64 Enterprise - Neues Projekt> Visual C #> Web> ASP.NET-Webanwendung> Web Forms

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.