Frage

Angenommen, ich habe Code, der sich theoretisch kompilieren lässt beliebig Version des .net-Frameworks.Denken Sie „Hallo Welt“, wenn Sie möchten.

Wenn ich den Code jedoch tatsächlich kompiliere, erhalte ich eine ausführbare Datei, die gegen eine ausgeführt wird besondere Ausführung.

Gibt es eine Möglichkeit, die Dinge so zu arrangieren, dass die kompilierte Exe-Datei einfach mit der gefundenen Version ausgeführt wird?Ich vermute stark, dass die Antwort „Nein“ lautet, aber ich würde mich freuen, wenn mir das Gegenteil bewiesen würde ...


Bearbeiten:Nun, ich gehe zum Fuß unserer Treppe.Ich hatte keine Ahnung, dass spätere Frameworks mit früheren Versionen kompilierte Exes problemlos ausführen würden.Vielen Dank für alle Antworten!

War es hilfreich?

Lösung

Ich bin mir nicht sicher, ob das richtig ist, aber ich würde versuchen, es für die niedrigste Version zu kompilieren. Die höheren Versionen sollten in der Lage sein, die Exe-Dateien der niedrigeren Versionen auszuführen.

Andere Tipps

Lesen Sie ScuttGus Beitrag über VS 2008 Multi-Targeting-Unterstützung

One of the big changes we are making starting with the VS 2008 release is to support what we call "Multi-Targeting" - which means that Visual Studio will now support targeting multiple versions of the .NET Framework, and developers will be able to start Nutzen Sie die neuen Funktionen, die Visual Studio bietet, ohne ihre vorhandenen Projekte immer aktualisieren und Anwendungen bereitzustellen, um eine neue Version der .NET -Framework -Bibliothek zu verwenden.

Wenn Sie nun ein vorhandenes Projekt öffnen oder erstellen Sie eine neue mit VS 2008, kann auswählen, welche Version von .NET Framework, mit dem gearbeitet werden soll - und die IDE wird seine Compiler aktualisieren und Feature-Set, das dazu passt.Unter Unter anderem bedeutet dies, dass Funktionen, Steuerelemente, Projekte, Artikelvorlagen und Baugruppen Referenzen, die damit nicht funktionieren Fassung des Rahmens versteckt, und wenn Sie Ihre Anwendung können Sie die kompilierte Ausgabe und kopieren Sie sie auf ein Maschine, die nur über eine ältere Version verfügt des installierten .NET Frameworks und Sie wissen, dass die Anwendung Arbeit.

Auf diese Weise können Sie VS2008 verwenden, um .NET 2.0-Projekte zu entwickeln, die sowohl unter .NET 2.0, 3.0 als auch 3.5 funktionieren

Neben Multi-Targeting sind die Frameworks abwärtskompatibel, sodass etwas, das auf 1.0 kompiliert wurde, auf 1.1 und 2 läuft.Etwas, das auf 1.1 kompiliert wurde, läuft auf 2 ...usw.

Ich weiß @John Böker ist richtig, wenn es um .Net-Klassenbibliotheken geht.Sie können eine Klassenbibliothek für .Net 1.1 kompilieren und sie dann in einem .Net 2.0- oder höher-Projekt verwenden.

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

mit 2005 & 2008, ja (auf CLR 2.0)

Mit 2003, nein..weil es bis CLR 1.1 kompiliert wird

Theoretisch könnten Sie Code mit #if (DOTNET35) usw. schreiben, sodass Sie keine Funktionen verwenden, die außerhalb des Wissens des Compilers liegen, und dann den gewünschten Compiler in der App ausführen ...Ich bezweifle jedoch den Nutzen davon.

Nun, AFAIK, alle .NET-Versionen (außer Version 1.x) werden mit demselben Bytecode kompiliert.Im Fall von C# sind alle neuen Funktionen lediglich syntaktischer Zucker, der beim Kompilieren in C# 2.0-Konstrukte umgewandelt wird.Der entscheidende Punkt, an dem etwas schiefgehen kann, ist die Verwendung von C# 3.0- oder 3.5-spezifischen DLLs.Sie funktionieren nicht gut mit dem .NET 2.0-Framework und können daher nicht verwendet werden.

Ich kann mir keinen Workaround dafür vorstellen, tut mir leid :(

Bezüglich der Frage, welches .NET Framework der Benutzer installiert hat, gibt es auch eine neue Option mit dem Client Profile, das mit .NET 3.5 SP1 verfügbar ist.Dies ermöglicht es Ihnen grundsätzlich, ein kleines (277 KB) Bootstrap-Programm auszuliefern, das die erforderlichen Dateien herunterlädt und installiert (eine Teilmenge des vollständigen .NET-Frameworks).

Weitere Informationen und allgemeine Tipps zum Erstellen einer kleinen .NET-Installation finden Sie hier Blogeintrag von Scott Hanselman.

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