Problembehandlung bei der Konvertierung in Visual Web Developer
Aktualisiert: November 2007
Wenn Sie mit Microsoft Visual Web Developer ein Webanwendungsprojekt öffnen, das mit einer früheren Version von Microsoft Visual Studio .NET erstellt wurde, konvertiert Visual Web Developer die Webanwendung automatisch in das in ASP.NET, Version 2.0, verwendete Format.
![]() |
---|
Ausführliche Informationen zum Konvertierungsprozess finden Sie unter Webprojektkonvertierung aus Visual Studio .NET. |
In einigen Fällen verhalten sich Webanwendungen nach der Konvertierung anders. In diesem Thema werden die häufigsten dieser Situationen beschrieben und Lösungen vorgeschlagen. Weitere Informationen über die Problembehandlung bei der Migration finden Sie auch in den Informationen über die Migration im ASP.NET Development Center for Migration.
In diesem Thema werden folgende Konvertierungsprobleme beschrieben:
Steuerelemente rendern nach der Konvertierung anderes Markup
Markupvalidierung erzeugt Fehler
Page-Ereignisse werden nach der Konvertierung zweimal ausgelöst
Bei der Kompilierung werden mehrdeutige Klassen gemeldet
Fehler im Zusammenhang mit Änderungen im Code-Behind-Seitenmodell
Analysefehler
Ausgeschlossene Dateien sind nicht mehr ausgeschlossen
Teilweise konvertierte Projektmappen für gemischte Projekttypen
Öffnen einer webbasierten Site als Dateisystemsite
Clientseitige IDs werden aus der Code-Behind-Datei gelöscht
Zirkelverweisfehler
Steuerelemente rendern nach der Konvertierung anderes Markup
Wenn nicht angegeben ist, dass der Browser keine XHTML-Features unterstützt, rendern in ASP.NET 2.0 die Page-Klasse und ASP.NET-Webserver-Steuerelemente standardmäßig Markup, das mit dem XHTML 1.0 Transitional-Standard kompatibel ist. Der Konvertierungs-Assistent legt das mode-Attribut des xhtmlConformance-Elements automatisch auf Legacy fest. Nach der Konvertierung werden Elemente möglicherweise etwas anders gerendert als in früheren Versionen von ASP.NET. In den meisten Fällen haben die Unterschiede beim Rendering keine Auswirkungen auf die Funktionen der Anwendung. Bei Clientskripts, die bestimmte Tags oder Attribute benötigen, wird die Anwendung jedoch möglicherweise nicht wie zuvor ausgeführt.
Weitere Informationen finden Sie unter ASP.NET und XHTML.
Markupvalidierung erzeugt Fehler
Nach der Migration ist das Schema für die Standardmarkupvalidierung auf Internet Explorer 6.0 festgelegt. Dies bedeutet, dass der Editor Markup auf der Seite mit einem Schema vergleicht, anhand dessen in Microsoft Internet Explorer 6.0 gültiges HTML definiert wird. Dieser Schritt soll den Übergang zu Visual Web Developer erleichtern. Die empfohlene Vorgehensweise besteht im Ändern des Markups, sodass die Anwendungsseiten anhand des XHTML 1.0 Transitional-Validierungsschemas überprüft werden.
Ausführliche Informationen über das Ändern des Validierungsschemas finden Sie unter Gewusst wie: Auswählen eines Validierungsschemas für die HTML-Bearbeitung in Visual Web Developer.
Page-Ereignisse werden nach der Konvertierung zweimal ausgelöst
Beim Konvertierungsprozess wird das AutoEventWireup-Attribut der @ Page-Direktive entfernt. Der Standardwert für dieses Attribut lautet true. Dies bedeutet, dass die Seite automatisch Ereignisse mit dem Namen Page_event auslöst. Wenn für eine Seite das AutoEventWireup-Attribut explizit auf false festgelegt ist, werden Ereignisse auf der Seite nach der Konvertierung automatisch ausgelöst. Wenn die Seite eine andere explizite Möglichkeit zum Auslösen des Ereignisses enthält, z. B. das Handles-Schlüsselwort in Visual Basic, wird das Ereignis möglicherweise zweimal ausgelöst. Zum Beheben dieses Problems fügen Sie der @ Page-Direktive AutoEventWireup="false" hinzu.
Bei der Kompilierung werden mehrdeutige Klassen gemeldet
Nach dem Konvertieren eines Projekts kann es vorkommen, dass der Compiler meldet, dass eine Klasse mehrdeutig ist. Dies bedeutet, dass sie aus mehr als einem Namespace importiert wurde. Wenn ein konvertiertes Projekt beispielsweise eine Instanz der Cache-Klasse erstellt, meldet der Compiler, dass sich die Klasse im System.Net-Namespace und im System.Web.Caching-Namespace befindet.
In diesen Fällen enthält .NET Framework, Version 2.0, eine neue Klasse mit dem gleichen Namen wie eine vorhandene Klasse. Suchen Sie zum Beheben dieses Problems im Code sämtliche Verweise auf die Klasse, und stellen Sie dann dem Klassennamen den Namespacenamen voran, um so einen vollqualifizierten Verweis zu erstellen.
Fehler im Zusammenhang mit Änderungen im Code-Behind-Seitenmodell
Das Konvertieren von Projekten mit ASPX-Seiten, die auf klassengeschützte Member in Code-Behind-Klassen zugreifen, kann möglicherweise Ausnahmen generieren. Dies wird durch die Änderung des Code-Behind-Modells in .NET Framework 2.0 verursacht. In früheren Versionen von .NET Framework waren Seiten abgeleitete Klassen von Code-Behind-Klassen. In ASP.NET 2.0 jedoch definieren Code-Behind-Klassen Teilklassen, die während der Seitengenerierung zusammen mit der ASPX-Seite verwendet werden, um die resultierende kompilierte Seite zu erstellen.
Ein häufiges Szenario, in dem dieses Konvertierungsproblem möglicherweise auftritt, ist eine Anwendung, in der freigegebene Layoutkomponenten in einer Code-Behind-Basisklasse definiert werden. Sie können die gleiche gemeinsame Layoutfunktionalität erreichen, indem Sie Benutzersteuerelemente, Masterseiten oder das CodeFileBaseClass-Attribut der @ Page-Direktive verwenden. Weitere Informationen zum Entwickeln von Benutzersteuerelementen finden Sie unter Übersicht über ASP.NET-Benutzersteuerelemente. Weitere Informationen zur Verwendung von Masterseiten finden Sie unter Übersicht über ASP.NET-Masterseiten.
Analysefehler
Der Konvertierungs-Assistent meldet Analysefehler für ASPX-Dateien, die nicht analysiert werden konnten. Die Ursachen von Analyseproblemen lassen sich in zwei Kategorien unterteilen:
Die ASPX-Seite wurde nicht ordnungsgemäß formatiert, bevor der Konvertierungs-Assistent ausgeführt wurde.
Ein CodeBehind-Attribut oder ein Src-Attribut der @ Page-Direktive wurde nicht gefunden.
Die Code-Behind-Datei, auf die auf einer ASPX-Seite verwiesen wird, wurde nicht gefunden.
Eine ASPX-Datei ist in der Projektdatei (z. B. .csproj oder .vbproj) aufgelistet, befindet sich jedoch nicht im Projektverzeichnis. Wenn die Datei kein Bestandteil des Projekts ist, kann dieser Fehler ignoriert werden.
Ausgeschlossene Dateien sind nicht mehr ausgeschlossen
In früheren Versionen von Visual Studio hatten Sie die Möglichkeit, Dateien aus einem Webprojekt auszuschließen oder in das Projekt einzufügen. Darüber hinaus konnte eine Datei aus dem Projektbuild ausgeschlossen werden, indem die zugehörige Buildaktion auf None festgelegt wurde. Der Migrations-Assistent behandelt diese beiden Fälle unterschiedlich. Der Migrations-Assistent konvertiert Dateien in einem Webprojekt, die nicht als ausgeschlossen gekennzeichnet sind. Der Migrations-Assistent konvertiert keine Dateien, die kein Bestandteil des Projektbuilds sind, also Dateien, in deren Konfiguration die Buildaktion auf None festgelegt ist.
Nach Abschluss der Konvertierung können Sie zuvor ausgeschlossene Dateien löschen oder sie mit einer Erweiterung umbenennen, die in Visual Studio nicht verwendet wird, z. B. mit der Erweiterung .exclude. Wenn eine Datei eines Projekts im Webprojekt nicht konvertiert wurde, stellen Sie sicher, dass die zugehörige Buildaktion nicht auf None festgelegt ist.
Dateien, deren zugeordnete Buildaktion auf None festgelegt ist, führen zum Generieren einer Fehlermeldung im Konvertierungsbericht. Weitere Informationen über den Konvertierungsbericht finden Sie unter Format des Konvertierungsberichts für die Migration.
Teilweise konvertierte Projektmappen für gemischte Projekttypen
In Microsoft Visual Studio 2005 und früheren Versionen kann eine Projektmappe sowohl aus Webprojekten als auch aus Clientprojekten, z. B. Klassenbibliotheken oder Windows-Anwendungen, bestehen. Wenn Sie eine Express Edition von Microsoft Visual Studio 2005 verwenden, kann nur der Teil der Projektmappe konvertiert werden, der zur Express Edition gehört. Wenn Sie z. B. den Konvertierungs-Assistenten in Visual Web Developer 2005 Express Edition verwenden, können Sie nur die Webprojekte von Projektmappen konvertieren, die Sie öffnen, unabhängig davon, welche anderen Projekttypen die Projektmappe enthält. Nach der Konvertierung ist die Projektmappe nur teilweise konvertiert. Um eine Projektmappe mit gemischten Projekttypen vollständig zu konvertierten, verwenden Sie Visual Web Developer 2005, Visual Studio 2005 oder Visual Studio 2005 Team System.
Öffnen einer webbasierten Site als dateibasierte Site
Die empfohlene Vorgehensweise zum Öffnen einer in einer früheren Version von Visual Studio erstellten Website ist die Verwendung der Menüoption Website öffnen in Visual Web Developer 2005. Anschließend können Sie die Site als dateibasierte Site, als lokale Microsoft IIS-Site, als über FTP bereitgestellte Site oder als Remotesite öffnen. Durch das Öffnen einer webbasierten Site als dateibasierte Site gehen IIS-Metadaten verloren. Insbesondere werden Informationen über Unterordner, die als virtuelle Verzeichnisse gekennzeichnet sind, nicht beibehalten. Der Konvertierungsbericht enthält eine Warnung, wenn eine webbasierte Site in eine dateibasierte Site konvertiert wird.
Es wird empfohlen, die Website zu schließen, mit dem Befehl Website öffnen erneut zu öffnen und die Registerkarte Lokale IIS auszuwählen. Weitere Informationen über die Verwendung des Migrations-Assistenten finden Sie unter Gewusst wie: Konvertieren eines Visual Studio .NET-Projekts in Visual Studio 2005. Weitere Informationen über den Konvertierungsbericht finden Sie unter Format des Konvertierungsberichts für die Migration.
Clientseitige IDs werden aus der Code-Behind-Datei gelöscht
Wenn für Markup ein clientseitiges ID-Attribut verwendet wird (z. B. in einem HTML-div-Element), das über denselben Namen wie eine auf der Code-Behind-Seite deklarierte Membervariable verfügt, wird das ID-Tag im Markup während der Konvertierung entfernt.
Um dieses Problem zu beheben, überprüfen Sie vor der Konvertierung Markup und Code, suchen Sie nach Namenskonflikten zwischen clientseitigen ID-Attributen und Membervariablen, und ändern Sie sie, sodass sich die Namen unterscheiden.
Zirkelverweisfehler
Bei der Konvertierung werden Code-Behind-Seiten, die auf andere Seiten oder Benutzersteuerelemente verweisen, @ Reference-Direktiven hinzugefügt. In bestimmten Fällen kann dies zu einem Zirkelverweis führen. Um die Problembehandlung zu erleichtern, können Sie das batch-Attribut des compilation-Elements auf False festlegen. Der Standardwert des batch-Attributs ist True. Durch Festlegen des batch-Attributs auf False werden Probleme mit Zirkelverweisen möglicherweise vermieden. Langfristig können Sie die Seiten oder Benutzersteuerelemente ändern, sodass sie eine abstrakte Basisklasse verwenden, die in einer im Ordner App_Code gespeicherten Klasse definiert ist, und das batch-Attribut wieder auf True festlegen.
Siehe auch
Aufgaben
Gewusst wie: Auswählen eines Validierungsschemas für die HTML-Bearbeitung in Visual Web Developer
Konzepte
Konvertierung von Webprojektmappen und Projektdateien