2009-10-05 5 views
9

Jusqu'où les logiciels compilés pour .NET 3.5 sont-ils avant de se bloquer sur un système sur lequel seulement .NET 2.0 est installé?Exécution d'un logiciel construit pour .NET 3.5 sur un système avec seulement .NET 2.0 installé

L'application que je développe utilise WPF et nécessite .NET 3.5, mais je voudrais afficher une boîte de dialogue conviviale (plutôt que de plantage) si l'utilisateur ne l'a pas installé.

Y a-t-il des manières standard de faire ceci, ou la documentation de Microsoft officielle là-dessus?


EDIT: Dans un monde idéal je voudrais juste vérifier que toutes les dépendances .NET sont satisfaites lors de l'installation. Comme certaines applications n'ont pas d'installateurs et que les utilisateurs pourraient éventuellement désinstaller .NET après l'installation de l'application, les réponses ci-dessous sont utiles.

+0

Cela dépend probablement un peu de si votre programme dépend de 3.5 assemblages (comme LINQ par exemple). Je suis curieux mais moi-même. –

Répondre

6

Il (probablement) ne plantera pas jusqu'à ce qu'il essaie d'utiliser une DLL qui a besoin de 3.5. Si l'application en cours d'exécution peut vérifier la version avant d'utiliser des DLL spécifiques à 3.5, vous pouvez afficher une boîte de dialogue winform et tout devrait bien se passer. Votre pari le plus sûr serait de faire de l'exe un assemblage 2.0 et de faire toutes vos choses 3.5 dans une DLL séparée compilée contre 3.5. Vous pouvez faire votre vérification dans la DLL 2.0 avant de charger l'un de vos assemblages 3.5.

3

.NET 3.5 utilise .NET 2.0 runtime, donc une application commencera parfaitement bien (cependant, échouera quand il tentera de charger 3.5 assemblys). Vous pouvez vérifier Environment.Version pour voir si c'est .NET 3.5 que vous utilisez et présentez l'utilisateur avec la norme MessageBox.Show sinon.

+1

Environment.Version indique uniquement la version du CLR et non les assemblys .NET installés. La façon officielle de vérifier la version est via le registre: http://stackoverflow.com/questions/199080/how-to-detect-what-net-framework-versions-and-service-packs-are-installed –

3

Avez-vous envisagé d'utiliser le déploiement ClickOnce? L'agent vérifiera et installera tous les éléments prérequis que vous spécifiez, y compris .Net. Cela rend également les mises à niveau de votre application assez faciles.

+0

Vous pouvez Ne comptez pas sur cela - en particulier dans les environnements d'entreprise où les utilisateurs n'auront pas d'accès administrateur à la machine – ChrisF

+0

Si elles ne disposent pas des droits nécessaires à l'installation, toute méthode d'installation échouera. –

+0

Dans ma situation particulière, l'application sera déployée sur des systèmes qui n'ont pas accès au réseau. Je n'ai jamais utilisé ClickOnce auparavant, mais cela me semble une bonne solution pour la plupart des situations. –

Questions connexes