2008-09-04 8 views
3

Angenommen, ich habe etwas Code, der in der Theorie gegen alle Version des .net-Framework kompilieren würde. Denken Sie "Hallo Welt", wenn Sie möchten.Targeting mehrere Versionen von. NET-Framework

Wenn ich den Code tatsächlich kompilieren, bekomme ich eine ausführbare Datei, die gegen eine insbesondere Version ausgeführt wird.

Gibt es eine Möglichkeit, Dinge so zu arrangieren, dass die kompilierte Exe nur gegen die Version läuft, die sie findet? Ich nehme stark an, dass die Antwort ist nein, aber ich würde gerne falsch erwiesen ...


Edit: Nun, ich gehe zu Fuß unserer Treppe. Ich hatte keine Ahnung, dass spätere Frameworks gerne Exe's ausführen würden, die unter früheren Versionen kompiliert wurden. Danke für alle Antworten!

Antwort

6

Ich bin nicht sicher funktionieren, wenn dies richtig ist, aber ich würde versuchen, es zu kompilieren Für die niedrigste Version sollten die höheren Versionen in der Lage sein, die niedrigeren Versionen auszuführen.

+0

Was wäre, wenn ich einige Funktionen nutzen wollte von den neueren Framework-Versionen aber immer noch das Programm an den älteren arbeiten? Was ist der richtige Ansatz in einem solchen Fall? – julealgon

+1

Dies ist möglicherweise nicht immer der Fall. Aus dem gleichen Grund habe ich einen Windows-Dienst für .NET 2.0 erstellt, jedoch hat Windows 8.0+ standardmäßig keine Version 2.0-3.5 installiert (muss über 'Funktionen hinzufügen oder entfernen' aktiviert werden). –

3

lesen ScuttGu der Post über VS 2008 Multi-Targeting Support

Einer der großen Veränderungen, die wir mit der Veröffentlichung VS ab 2008 machen ist zu unterstützen, was wir "Multi-Targeting" nennen - was bedeutet, dass Visual Studio unterstützt jetzt Targeting mehrere Versionen des .NET Framework , und Entwickler werden in der Lage sein, die Vorteile der neue Funktionen Visual Studio bietet zu nutzen, ohne immer ihreupgraden müssenvorhandenen Projekten und bereitgestellten Anwendungen eine neue Version von der .NET Framework-Bibliothek verwenden.

Nun, wenn Sie ein vorhandenes Projekt öffnen oder eine neue mit VS 2008 erstellen, geben Sie können Framework .NET wählen, welche Version mit zu arbeiten - und das IDE seine Compiler und Feature-Set aktualisieren dazu passen. Unter anderem bedeutet dies, dass Funktionen, Kontrollen, Projekte, Artikel-Vorlagen und Montag Referenzen, die mit dieser nicht Version des Frameworks arbeiten wird versteckt, und wenn Sie Ihre Anwendung erstellen Sie‘ Ich werde in der Lage sein, die kompilierte Ausgabe und kopieren Sie es auf eine Maschine, die nur eine ältere Version von .NET Framework installiert hat, und Sie wissen, dass die Anwendung arbeiten wird.

diese Weise können Sie VS2008 verwenden können .NET-2.0-Projekte zu entwickeln, die sowohl auf .NET 2.0, 3.0 und 3.5

0

An der Seite Multi-Targeting sind die Gerüste rückwärtskompatibel, so zusammengestellt, etwas zu 1.0 läuft auf 1.1 und 2. Somthing auf 1.1 kompiliert wird auf 2 laufen ... etc.

0

Ich weiß @John Boker korrekt ist, wenn Es kommt zu .NET-Klassenbibliotheken. Sie können eine Klassenbibliothek für .Net 1.1 kompilieren und dann in einem .Net 2.0 oder höheren Projekt verwenden.

Ich vermute, das gleiche gilt auch für ausführbare Dateien.

0

mit 2005 & 2008 ja (auf CLR 2,0)

Mit 2003, Nr .. weil es kompiliert zu CLR 1.1

Sie könnten theorectically einen Code mit #if aufschreiben (DOTNET35) und solche damit Sie keine Funktionen außerhalb des Compiler-Wissens verwenden und dann den gewünschten Compiler auf der App ausführen ... Ich stelle die Nützlichkeit dieser Frage jedoch in Frage.

0

Nun, AFAIK, alle .NET-Versionen (außer Version 1.x) kompilieren auf den gleichen Bytecode. Im Fall von C# sind alle neuen Funktionen einfach syntaktischer Zucker, die beim Kompilieren in C# 2.0 Konstrukte umgewandelt werden. Der Schlüsselpunkt, wo Dinge schief gehen können, ist, wenn Sie C# 3.0 oder 3.5 spezifische DLLs verwenden. Sie funktionieren nicht gut mit dem .NET 2.0-Framework, so dass Sie diese nicht verwenden können.

Ich kann nicht wirklich für diese von einer Vermeidung des Problems denken, sorry :(

0

Zum Thema dem .NET-Framework der Benutzer installiert hat, gibt es auch eine neue Option mit dem Client Profile, die mit verfügbar ist. NET 3.5 SP1 Dies ermöglicht es Ihnen, ein kleines (277k) Bootstrap-Programm zu versenden, das die erforderlichen Dateien herunterlädt und installiert (eine Teilmenge des gesamten .NET-Frameworks)

Weitere Informationen und allgemeine Tipps zum Erstellen eines kleinen .NET-Installation, siehe dieses tolle blog entry by Scott Hanselman.

Verwandte Themen