2012-12-17 21 views
8

Ho un'applicazione .NET 2.0 e ho intenzione di creare un 'programma di installazione intelligente' che controlli la versione .NET disponibile sul PC dell'utente e installa la mia porta specifica per esso. ho visto che:Completa comprensione delle versioni .NET e compatibilità con le versioni precedenti

  • Windows XP (SP2) viene fornito con .NET 2.0
  • Windows Vista viene fornito con .NET 3.0
  • Windows 7 viene fornito con .NET 3.5
  • Windows 8 viene fornito con .NET 4.5

Per quanto ne so, l'unica cosa che non è compatibile con le versioni precedenti è la versione CLR, che viene modificata dopo .NET 4.0.

Quindi, se io non voglio all'utente di installare quadro aggiuntivo solo per la mia domanda, dovrei avere queste versioni di mia app:

  • NET 2.0 - XP (SP2 e superiore), Vista (3.0 dovrebbe essere in grado di eseguire 2.0)
  • .NET 4.0 - se qualcuno ha installato solo SOLO 4.0 e nessun altro. NET 4.5 - per gli utenti che hanno Windows 8 con nessun altro .NET installato

Ho ragione? O 4.5/4.0 sono compatibili con le versioni precedenti?

EDIT: Se uno qualsiasi dei dati superiori non è giusto, per favore correggetemi

+2

Urgh. Stai per creare una versione diversa della tua applicazione per ogni versione di .NET disponibile? Sembra un sacco di tempo sprecato e sforzo di codifica.Perché non scegliere il minimo comune denominatore? – KingCronus

+0

Non cambierò una sola riga, ricompilare solo per 3 diverse versioni. Il mio installatore web sceglierà quale installare. – blez

+2

Quindi non userete alcuna funzionalità .NET 3/3.5/4 +. Potresti anche avere una singola versione .NET 2 secondo me? Qual è il tuo ragionamento per non volere che l'utente debba installare un framework? Sembra perfettamente ragionevole secondo me. – KingCronus

risposta

9

Per quanto ne so, l'unica cosa che non è compatibile è la versione CLR, che è cambiato dopo NET 4.0.

Questo non è vero. È possibile eseguire l'applicazione compilata .NET2 sul framework .NET4.

Hai solo bisogno di aggiungere quanto segue al vostro app.config:

<configuration> 
<startup> 
    <supportedRuntime version="v2.0.50727"/> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0,Profile=Client"/> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/> 
    </startup> 
</configuration> 

nota, sono d'accordo con @KingKronus, cioè Why not just pick the lowest common denominator?

Nel tuo caso che sarebbe .NET2 compilato e una sola set di pdbs e un set di compilation.

Sì, è necessario verificare che l'app compilata con .NET2 funzioni correttamente sul runtime .net4 MA in ogni caso è necessario testare l'app in tutti i framework della soluzione originale.

+0

Esiste la stessa cosa, ma per 4.5? E funziona anche per i progetti 3.5 su 4.0? – blez

+1

stavo controllando che adesso ... la cosa migliore è provarlo. vedere anche questo link: http://msdn.microsoft.com/en-us/library/ff602939.aspx '.NET Framework 4.5 è compatibile con le versioni precedenti con le applicazioni create con .NET Framework versioni 1.1, 2.0, 3.0, 3.5 e 4.' – wal

+0

e sì, funzionerà anche su 3.5 progetti; ricorda che funziona 'perché i progetti .net3.5 usano ancora il runtime .net2 * * – wal

0
  1. In realtà non c'è bisogno di controllare manualmente. L'applicazione mostrerà il messaggio corretto dopo averlo eseguito e chiederà all'utente di scaricare e installare la versione richiesta.

  2. Se è ancora necessario supportare Windows XP, selezionare .NET 4.0. .NET 4.5 tratteremo

+0

"In realtà non è necessario controllarlo manualmente, l'applicazione mostrerà il messaggio corretto dopo averlo eseguito e chiederà all'utente di scaricare e installare la versione richiesta." questo è vero solo su Windows 8. – blez

+1

@blez Sbagliato. Windows XP e Windows 7 ti mostreranno anche questo dialogo, l'ho controllato. Windows XP non riconoscerà 4.5, ma 4.0 di sicuro – VladL

+0

Non voglio che l'utente installi l'intero framework solo per la mia applicazione. – blez