Upgrade von .NET 1.1 auf .NET 2.0, was ist zu erwarten?

8

Ich arbeite an einem großen .NET 1.1-Projekt, und es gibt den Wunsch, dies zu verbessern, hauptsächlich um bessere Werkzeuge wie Visual Studio 2008 zu verwenden, aber auch wegen der neuen Funktionen und der geringeren Anzahl von Fehlern in das .NET 2.0 Framework.

Das Projekt besteht zum größten Teil aus VB.NET, aber es gibt auch Teile in C #. Es ist eine Windows Forms-Anwendung, die verschiedene Steuerelemente von Drittanbietern verwendet. Mit .NET Remoting spricht der Rich Client mit einem Serverprozess, der mit einer MSSQL 2000 Datenbank verbunden ist.

Welche Art von Problemen können wir erwarten, wenn wir uns entscheiden, das Upgrade durchzuführen?

    
Tobi 11.09.2008, 19:48
quelle

13 Antworten

8

Es gibt eine Änderung am Thading-Modell in .NET 2.0, bei der nicht behandelte Ausnahmen in einem Thread dazu führen, dass die gesamte App beendet wird. Ich bin darauf gestoßen, als ich eine App aktualisiert habe, die viel Threading durchgeführt hat und gelegentlich abgestürzt ist. Offensichtlich ist das .Net 2.0-Modell robuster, da Sie diese sowieso erfassen sollten, aber es war das einzige wirkliche Problem, auf das ich bei der Migration stieß.

Dieser Artikel spricht darüber: Ссылка

    
MikeeMike 15.09.2008 10:43
quelle
5

Wir machen gerade die gleiche Migration, Tobi. Zunächst erhalten Sie eine gute Vorstellung davon, was Sie erwarten können, indem Sie eine Kopie Ihres Projekts (oder eines Teils davon) erstellen und über den .NET 2.0-Compiler einen "Trockenlauf" durchführen. Meine Erfahrung damit war, dass der 2.0 Compiler mehr Warnungen über schlechte Programmierpraktiken gibt, die der 1.1 Compiler rutschen ließ. Der Compiler warnt Sie vor impliziten Umsetzungen, "mehrdeutigen" Rückgabepfaden (einem Codepfad, bei dem eine Funktion keinen Wert zurückgibt) und einigen anderen kleineren Dingen.

Hier sind ein paar Links, die Sie hilfreich finden könnten: .NET Framework-Kompatibilität

Word-Dokument zum Brechen von Änderungen in .NET Framework 2.0

    
Mark 11.09.2008 20:05
quelle
2

Nichts, wirklich. Sie werden bei der Kompilierung ein paar Warnungen über veraltete Methoden finden, aber oft sind diese einfach zu beheben.

Sie sollten groß schießen und 3,5 gehen. Das Wasser ist hier drin.

    
Will 11.09.2008 19:50
quelle
2

Werfen Sie einen Blick auf dieses Whitepaper zum Entwickeln einer .NET 2.0-Anwendung auf 3.5. Ich bin der Meinung, dass die Änderungen von 1.1 zu 2.0 signifikanter sind, aber der Prozess sollte ähnlich sein.

    
Anthony Mastrean 11.09.2008 19:57
quelle
2

Zusätzlich zu den oben erwähnten App-Konfigurationstests müssen Sie, wenn Sie eine XSD-Validierung verwenden, Code zum Laden und Validieren von XML ersetzen.

    
Kevin Kershaw 11.09.2008 20:09
quelle
1

Die meisten Warnungen zur Kompilierung werden angezeigt, wenn Sie app.config zum Speichern von Programmeinstellungen verwenden. Die 1.1-Konfigurationsklasse wurde für System.Configuration.ConfigurationManager nicht mehr unterstützt.

Andere Warnungen, die Sie möglicherweise vom Compiler erhalten, sind nicht initialisierte Variablen (setzen Sie sie auf "= nothing" oder "= null;" in der Variablendeklaration, um sie verschwinden zu lassen) und unbenutzte Variablen (der Compiler ist sicher) sie sind sicher zu löschen).

    
C. Lawrence Wenham 11.09.2008 19:55
quelle
1

Der Großteil des Codes sollte immer noch kompiliert werden, mit Ausnahme einiger Warnungen, die über veraltete Dinge sprechen.

Aber es gibt ein paar Dinge, die Sie in Bezug auf Visual Studio-generierten Code beachten sollten.

Wenn Sie in Visual Studio 2003 stark typisierte Datasets erstellt haben, können Sie sie in neueren Versionen von Visual Studio nicht mehr bearbeiten. Sie müssen sie neu erstellen oder ersetzen Sie sie einfach durch etwas wie nHibernate für ultimative OR-Mapper-Glückseligkeit

Der Designer für Formulare sollte immer noch mit alten Formen arbeiten. Sie können jedoch einige Verwirrung bekommen, weil 2005 und 2008 hier partielle Klassen verwenden. Wenn Sie also neue Formulare erstellen, sieht der Code anders aus als die alten. Ich habe nie eine ASP.Net-Anwendung aktualisiert, so dass ich nichts über Web-Formulare weiß, aber ich denke, es wird genauso funktionieren wie Winforms-Sachen. Meistens wird es funktionieren, aber etwas Designerverrücktheit erwarten.

    
Mendelt 11.09.2008 19:59
quelle
1

.NET 1.1 und .NET 2.0-3.5 sind völlig unterschiedliche Frameworks, und noch wichtiger, .NET 3.5 ist nur ein Satz zusätzlicher Assemblys, die Sie zu Ihrem .NET 2.0-Projekt hinzufügen können - keine der Kern-Assemblies wurde tatsächlich geändert, soweit ich weiß - und einen aktualisierten Compiler, der über die Syntax Zucker LINQ, Erweiterungsmethoden, etc kennt.

Mit anderen Worten, ich denke nicht, dass ein .NET 2.0-3.5-Upgrade einem .NET 1.1-2.0-Upgrade sehr ähnlich ist.

    
Tobi 11.09.2008 20:12
quelle
1

Die Dinge werden wahrscheinlich OK kompilieren, aber wir hatten ein paar unangenehme Laufzeitprobleme mit einer Anwendung, die wir zu Beginn des Jahres aktualisiert haben.

Zuerst hatten wir eine Reihe von Problemen mit der Zeitzonenbehandlung in DateTime-Objekten beim Aufruf von 1.1 Webservices aus einer 2.0-Anwendung, da die Konvertierung von und nach UTC bei der Serialisierung in die Verbindung zwischen Framework-Versionen unterschiedlich funktionierte.

Außerdem verwenden 2.0 async-Webdienste den kluzzy-ereignisbasierten Mechanismus anstelle des IAsyncResult-Musters, was bei der Stapelverarbeitung Ihrer Anforderungen ein echter Schmerz ist.

Schließlich hatten wir noch Legacy-Code, der einen eingebetteten Browser mit Microsoft.mshtml.dll hosten sollte. Das Upgrade auf Version 2.0 führte dazu, dass die Anwendung automatisch auf eine neuere Version dieser DLL umschaltete, die ein verändertes Verhalten im Zusammenhang mit JavaScript-Interaktionen aufwies. Dieser letzte Fall ist ein wenig obskurer Fall, zeigt aber, dass der Wechsel zur neueren Laufzeit möglicherweise Auswirkungen auf jede mögliche COM-Interaktion hat.

Hoffe, das hilft!

    
Russ 15.09.2008 11:26
quelle
1

Die Art und Weise, wie wir E-Mails bearbeitet haben, musste sich ändern. Die Version 1.1 verwendet system.WEB.mail mit

%Vor%

und das neue hat system.NET.mail

%Vor%     
CindyH 16.09.2008 16:58
quelle
1

Upgrade-Probleme bei RESX-Dateien

Achten Sie auf internationalisierte RESX-Dateien.

Wenn Sie ein net 1.1-Formular in .net 2.0 erneut öffnen, wird die RESX-Datei auf eine neue Version aktualisiert. In .net 1.1 enthielt die .resx Datei nur die Änderungen. In .net 2.0 werden alle Felder in der Standard-RESX-Datei jetzt in die Fremdsprachen-ResX-Datei verschoben. (.fr.resx zum Beispiel). Wenn Sie das Formular bereits internationalisiert haben, müssen alle fremdsprachigen resx-Dateien betrachtet werden.

Internationalisierungs-Tools

Einige Tools, die Sie möglicherweise zur Internationalisierung in Massen verwendet / geschrieben haben, funktionieren möglicherweise nicht mehr, da sie möglicherweise nummerierte Ressourcen verwendet haben. (Multi Lang & amp; Infragistics)

Infragistics Winforms-Steuerelemente ändern das InitializeForm () in .net 1.1 und greifen auf Ressourcen unter Verwendung eines Ressource-Nummerierungssystems zu. Bei der Migration auf .net 2.0 schlägt die Nummerierung der Infragistics-Ressourcen fehl, da die Resx-Datei neu generiert wird. Sie müssen Ihre Infragistics-Bibliotheken aktualisieren.

    
2 revsuser18443 05.10.2008 08:28
quelle
0

Sie werden wahrscheinlich keine Probleme mit breaking haben, obwohl Sie möglicherweise veraltete Methodenwarnungen erhalten. Der Compiler sollte Ihnen im Allgemeinen sagen, was die Ersetzung ist. Ich weiß, dass einige der System.Configuration Dinge aktualisiert wurden.

    
swilliams 11.09.2008 19:55
quelle
0

Es sollte kein allzu großes Problem geben, da es in der Theorie abwärtskompatibel ist (ich bemerke MikeeMikes Kommentar zu Thread-Ausnahmen). Nach dem Umzug wird es Ihnen gut gehen, es gibt einige nette Dinge wie Generika. Auch wenn Sie nicht alle Ihre Sammlungen auf einen Schlag auf Generika portieren möchten, sollte Ihr Code aufgrund der reduzierten Anzahl von Abgüssen zuverlässiger sein - und wahrscheinlich schneller (obwohl die Laufleistung in diesem Aspekt variieren kann). . Im Moment beginne ich mit dem .NET 2 - & gt; .NET 4 Konvertierung von drei meiner Produkte. Der Hauptvorteil wird die weitere Verbesserung der Multi-Thread-Unterstützung sein (parallele foreach-Schleifen usw.).

    
winwaed 04.01.2011 14:50
quelle

Tags und Links