Referenz: https://support.microsoft.com/en-in/help/2028526/building-an-asp-net-project-in-visual-studio-results-in-compiler-error
Beim Erstellen eines ASP.NET-Projekts mit Visual Studio wird möglicherweise zufällig eine Fehlermeldung angezeigt, die der folgenden ähnelt:
Compiler-Fehlermeldung: CS0433: Der Typ 'ASP.summary_common_controls_notes_ascx' ist in beiden 'c: \ Windows \ Microsoft.NET \ Framework64 \ v2.0.50727 \ Temporäre ASP.NET-Dateien \ Book_Details \ abc12345 \ def8910 \ App_Web_msftx123.dll' und 'vorhanden. c: \ Windows \ Microsoft.NET \ Framework64 \ v2.0.50727 \ Temporäre ASP.NET-Dateien \ Book_Details \ abc12345 \ def8910 \ App_Web_msfty456.dll '
Beschreibung: Beim Kompilieren einer Ressource, die zur Bearbeitung dieser Anforderung erforderlich ist, ist ein Fehler aufgetreten. Bitte überprüfen Sie die folgenden spezifischen Fehlerdetails und ändern Sie Ihren Quellcode entsprechend.
Quellfehler: Zeile 100: Zeile 101:
Neue Notizen Zeile 102:
Zeile 103:
1450 Zeile 104:
Zusammenfassung.
Quelldatei: d: \ http \ post \ publisher \ default.aspx Zeile: 102
Häufige Szenarien, in denen dieser Fehler auftreten kann, werden unten erläutert
Szenario 1
Beschreibung: Eine häufige Ursache ist, dass sich zwei Assemblys im selben Ordner für Webanwendungsbereiche befinden, die zwei Klassendefinitionen enthalten, aber denselben Klassennamen haben. Dies kann passieren, wenn mehr als eine Default.aspx in einer einzelnen Assembly kompiliert wurde. Dies tritt normalerweise auf, wenn sowohl die Masterseite (Default.master) als auch die Standard-ASPX-Seite (Default.aspx) eine _Default-Klasse deklarieren. Lösung: Ändern Sie den Klassennamen der Masterseite (in den meisten Fällen von _Default) und erstellen Sie das Projekt neu. Es ist wichtig, Namenskonflikte zwischen Klassen zu lösen.
Szenario 2
Beschreibung: Die Referenzpfade in Visual Studio werden verwendet, um den Ordnerpfad für Assemblyreferenzen anzugeben, die vom Projekt verwendet werden. Möglicherweise enthält der Pfad eine Assembly, die denselben Klassennamen enthält. Möglicherweise werden derselben Assembly mehrere Verweise hinzugefügt (möglicherweise eine andere Version oder ein anderer Name), was zu einem Namenskonflikt führt.
Lösung: Entfernen Sie die alte Versionsreferenz. Klicken Sie dazu in Visual Studio mit der rechten Maustaste auf Ihre Website und überprüfen Sie die "Verweise" in den Eigenschaften.
Szenario 3
Beschreibung: Wenn eine ASP.NET-Webanwendung kompiliert wird, wird der kompilierte Code standardmäßig im Ordner Temporäre ASP.NET-Dateien abgelegt. Standardmäßig werden die Zugriffsberechtigungen an das lokale ASP.NET-Benutzerkonto vergeben, das über die für den Zugriff auf kompilierten Code erforderlichen Vertrauensstellungen verfügt. Es ist möglich, dass einige Änderungen an den Standardberechtigungen zu Versionskonflikten geführt haben. Eine andere Möglichkeit wäre, dass Antivirensoftware versehentlich eine Baugruppe sperrt. Lösung: Löschen Sie den Ordner Temporäre ASP.NET-Dateien von allen Inhalten.
Szenario 4
Beschreibung: Wenn das Batch-Attribut in der Datei web.config auf True gesetzt ist, wird die Verzögerung beseitigt, die durch die Kompilierung verursacht wird, die beim ersten Zugriff auf eine Datei erforderlich ist. ASP.NET kompiliert alle nicht kompilierten Dateien im Batch-Modus vor, was zu Verzögerungen beim ersten Kompilieren der Dateien führt. Durch Deaktivieren der Stapelkompilierung werden möglicherweise maskierte Kompilierungsfehler angezeigt, die möglicherweise in der Anwendung vorhanden sind, jedoch nicht gemeldet werden. Wichtiger für dieses Problem ist jedoch, dass ASP.NET einzelne .aspx / .ascx-Dateien dynamisch in separate Assemblys anstatt in eine einzelne Assembly kompilieren soll. Lösung: Setzen Sie batch = false im Abschnitt in web.config. Dies sollte als vorübergehende Lösung betrachtet werden, da das Festlegen von batch = false im Kompilierungsabschnitt erhebliche Auswirkungen auf die Erstellungszeiten der Anwendung in Visual Studio hat.
Szenario 5
Beschreibung: Durch Ändern der Datei web.config für eine ASP.NET-Anwendung oder Ändern einer Datei im Ordner bin (z. B. Hinzufügen, Löschen oder Umbenennen) wird die AppDomain neu gestartet. In diesem Fall geht der gesamte Sitzungsstatus verloren und zwischengespeicherte Elemente werden beim Neustart der Website aus dem Cache entfernt. Möglicherweise wird das Problem durch einen inkonsistenten Status in der Webanwendung verursacht. Lösung: Lösen Sie einen AppDomain-Neustart aus, indem Sie die Datei web.config berühren (bearbeiten).
Szenario 6
Beschreibung: Sie können den Quellcode im Ordner App_Code speichern und er wird zur Laufzeit automatisch kompiliert. Auf die resultierende Assembly kann jeder andere Code in der Webanwendung zugreifen. Der Ordner App_Code funktioniert daher ähnlich wie der Ordner Bin, außer dass Sie darin Quellcode anstelle von kompiliertem Code speichern können. Die Klasse wird neu kompiliert, wenn sich die Quelldatei ändert. Wenn aufgrund einer veralteten Assembly ein Konflikt auftritt, kann das Problem möglicherweise durch Erzwingen einer Neukompilierung behoben werden. Lösung: Berühren Sie eine Datei in den Ordnern Bin oder App_Code, um eine vollständige Neukompilierung auszulösen.