Domanda

Supponiamo di avere del codice che, in teoria, verrebbe compilato Qualunque versione del framework .net.Pensa "Hello World", se vuoi.

Se effettivamente compilo il codice, però, otterrò un eseguibile che funziona contro uno particolare versione.

Esiste un modo per organizzare le cose in modo che l'exe compilato venga eseguito con qualunque versione trovi?Ho il forte sospetto che la risposta sia no, ma sarei felice di essere smentito...


Modificare:Bene, andrò ai piedi delle nostre scale.Non avevo idea che i framework successivi avrebbero eseguito felicemente gli exe compilati con versioni precedenti.Grazie per tutte le risposte!

È stato utile?

Soluzione

Non sono sicuro che sia corretto, ma proverei a compilarlo per la versione più bassa, le versioni più alte dovrebbero essere in grado di eseguire gli exe delle versioni inferiori.

Altri suggerimenti

Leggi il post di ScuttGu su Supporto multi-targeting VS 2008

Uno dei grandi cambiamenti che stiamo apportando a partire dalla versione VS 2008 è supportare ciò che chiamiamo "multi -targeting", il che significa che Visual Studio ora supporterà il targeting di più versioni del framework .NET e gli sviluppatori saranno in grado di iniziare Sfruttare le nuove funzionalità che Visual Studio fornisce senza dover aggiornare sempre i loro progetti esistenti e distribuire applicazioni per utilizzare una nuova versione della libreria .NET Framework.

Ora, quando apri un progetto esistente o ne crei uno nuovo con VS 2008, puoi scegliere con quale versione del framework .NET funzionante - e l'IDE aggiornerà i suoi compilatori e il set di funzionalità per abbinarci.Tra le altre cose, ciò significa che caratteristiche, controlli, progetti, tempi di articolo e riferimenti di assemblaggio che non funzionano con quella versione del framework saranno nascosti e quando crei la tua applicazione sarai in grado di prendere il compilato Output e copialo su una macchina che ha solo una versione precedente del framework .NET installato e saprai che l'applicazione funzionerà.

In questo modo puoi utilizzare VS2008 per sviluppare progetti .NET 2.0 che funzioneranno sia su .NET 2.0, 3.0 che 3.5

Oltre al multi targeting, i framework sono retrocompatibili, quindi qualcosa compilato su 1.0 verrà eseguito su 1.1 e 2.Qualcosa compilato sulla 1.1 verrà eseguito sulla 2...eccetera.

Lo so @John Boker è corretto quando si tratta di librerie di classi .Net.È possibile compilare una libreria di classi su .Net 1.1 e quindi utilizzarla in un progetto .Net 2.0 o versione successiva.

Sospetto che lo stesso valga anche per gli eseguibili.

con 2005 e 2008, sì (su CLR 2.0)

Con il 2003 no..perché viene compilato fino a CLR 1.1

In teoria potresti scrivere del codice usando #if (DOTNET35) e simili in modo da non utilizzare funzionalità al di fuori della conoscenza del compilatore e quindi eseguire il compilatore desiderato sull'app...Metto in dubbio però l'utilità di questo.

Bene, per quanto ne so, tutte le versioni di .NET (eccetto la versione 1.x) vengono compilate con lo stesso bytecode.Nel caso di C#, tutte le nuove funzionalità sono semplicemente zucchero sintattico, che viene trasformato in costrutti C# 2.0 durante la compilazione.Il punto chiave in cui le cose potrebbero andare storte è quando si usano DLL specifiche di C# 3.0 o 3.5.Non funzionano bene con il framework .NET 2.0, quindi non puoi usarli.

Non riesco davvero a pensare a una soluzione alternativa a questo, mi dispiace :(

A seconda del framework .NET installato dall'utente, con .NET 3.5 SP1 è disponibile anche una nuova opzione con il profilo client.Ciò consente fondamentalmente di fornire un piccolo programma di bootstrap (277k) che scarica e installa i file richiesti (un sottoinsieme dell'intero framework .NET).

Per ulteriori informazioni e suggerimenti generali sulla creazione di una piccola installazione .NET, vedere questo fantastico post sul blog di Scott Hanselman.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top