Wie soll ich schreiben Code mit einzigartigen Abschnitten für verschiedene Versionen von .NET

StackOverflow https://stackoverflow.com/questions/85773

  •  01-07-2019
  •  | 
  •  

Frage

Meine Quellcode muss sowohl .NET-Version 1.1 und 2.0 unterstützen ... wie kann ich für die verschiedenen Versionen zu testen und was ist der beste Weg, um mit dieser Situation fertig zu werden.

Ich frage mich, wenn ich die beiden Abschnitte des Codes inline haben sollte, in getrennten Klassen, Methoden usw. Was denken Sie?

War es hilfreich?

Lösung

Wenn Sie so etwas wie dies tun wollen, müssen Sie Präprozessor Befehle und bedingte Kompilierung Symbole verwenden.

Ich würde Symbole verwenden, die eindeutig die Version von .NET zeigen Sie zielen (sagen NET11 und NET20) und dann den entsprechenden Code wie folgt wickeln:

#if NET11
// .NET 1.1 code
#elif NET20
// .NET 2.0 code
#endif

Der Grund, es auf diese Weise eher als ein einfachen zu tun, wenn / sonst eine zusätzliche Schutzschicht, falls jemand vergisst, das Symbol zu definieren.

aber sagen, dass Sie wirklich in das Herz der Grund Drill-Down sollten, warum Sie wollen / müssen, dies zu tun.

Andere Tipps

Es gibt hier viele verschiedene Optionen. Wo ich arbeite, verwenden wir #if pragmas aber es könnte auch mit getrennten Baugruppen für die einzelnen Versionen erfolgen.

Im Idealfall würde man zumindest die Version hält abhängigen Code in separaten Teilklassendateien und macht die richtige Version zum Zeitpunkt der Kompilierung zur Verfügung. Ich würde dies geltend machen, wenn ich in der Zeit zurückgehen könnte, unsere Code-Basis hat jetzt eine ganze Menge #if Pragmas und manchmal kann es schwierig sein, zu verwalten. Der schlimmste Teil der Ganze #if Pragma Sache ist, dass Visual Studio einfach alles ignoriert, die mit der aktuellen definiert nicht kompiliert werden und es ist so sehr einfach zu brechen Änderungen zu überprüfen.

NUnit unterstützt sowohl 1.1 und 2.0 und so ist eine gute Wahl für einen Test-Framework. Es ist nicht allzu schwer, etwas zu verwenden, wie NAnt machen separaten 1.1 und 2.0 erstellt und dann automatisch die NUnit Tests ausführen .

würde ich die Frage zu stellen, warum Sie zwei Codebasen zu halten, würde ich eine auswählen und mit ihm gehen, wenn es irgendeine Chance, es ist.

Der Versuch, mit der Anzahl der Änderungen synchron zwei Codebasen zu halten, und Arten von Veränderungen würden sehr komplex sein, und ein Build-Prozess zu bauen für beiden Versionen sehr komplex sein würden.

Wir hatten dieses Problem und wir am Ende mit einer „Kompatibilitätsschicht“, wo wir einen einzigen Satz von Schnittstellen und Utility-Code für .NET v1.1 und v2.0 implementiert.

Dann legte unser Installateur den richtigen Code für die richtige Version herunter. Wir verwenden NSIS (kostenlos!), Und sie haben Funktionen, die Sie die .NET-Version zu bestimmen, können anrufen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top