9
votes

Logiciel d'exécution intégré pour .NET 3.5 sur un système avec uniquement .NET 2.0 installé

jusqu'où le logiciel est-il compilé pour .NET 3.5 Get avant de se bloquer sur un système uniquement .NET 2.0 installé?

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

Y a-t-il des moyens standard de faire cela, ou de la documentation de Microsoft officielle sur elle?


Modifier : Dans un monde idéal, je vérifierais que toutes les dépendances .NET sont satisfaites lors de l'installation. Étant donné que certaines applications n'ont pas d'installateurs et que les utilisateurs pouvaient potentiellement désinstaller .NET après l'installation de l'application, je trouve les réponses ci-dessous pour être utiles.


1 commentaires

Cela dépend probablement un peu si votre programme dépend des ensembles 3.5 (comme Linq par exemple). Je suis attentivement curieux si moi-même.


3 Réponses :


6
votes

Il (probablement) ne s'écrasera pas jusqu'à ce qu'il essaie d'utiliser une DLL qui a besoin de 3.5. Si l'application 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 vous devriez être correct. Votre pari le plus sûr serait de faire en sorte que l'EXE soit un assemblage 2.0 et de faire toutes vos 3,5 choses dans une DLL séparée qui est compilée contre 3,5. Vous pouvez effectuer votre chèque dans la DLL 2.0 avant de charger l'un de vos ensembles 3.5.


0 commentaires

3
votes

.NET 3.5 Utilise .NET 2.0 Runtime, une application démarrera donc parfaitement bien (cependant, il échouera quand il tentera de charger des assemblages 3.5). Vous pouvez vérifier Environnement.version pour voir si c'est .NET 3.5 Vous utilisez et présentez l'utilisateur avec Standard MessageBox.show SI NON.


1 commentaires

Environnement.Version n'indique que la version du CLR, et non des assemblages .NET installé. La voie officielle de vérifier la version est via le registre: Stackoverflow.com/Questtions/199080/...



3
votes

Avez-vous envisagé d'utiliser un déploiement ClickOnce? L'agent vérifiera et installera tous les éléments prérequis que vous spécifiez, y compris .NET. Il fait également pousser des mises à niveau de votre application assez indolore.


7 commentaires

Vous ne pouvez pas compter sur cela - en particulier dans les environnements d'entreprise où les utilisateurs n'auront pas accès à la machine.


S'ils ne disposent pas des droits nécessaires à l'installation, toute méthode d'installation échouera.


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 pas utilisé ClickOnce avant, mais cela semble être une bonne solution pour la plupart des situations.


@MDDUDLEY, vous pouvez inclure les fichiers d'installation sur un CD d'installation. Voyez ici pour comment: MSDN.MicRosoft.com/en-us/Library/ms172610 .aspx


Notez que ClickOnce nécessite .NET 3.0 ou 3.5 à installer pour fonctionner. Si l'utilisateur ne dispose que de .NET 2.0 installé, le programme d'installation ClickOnce ne l'installera pas, il le dirigera vers le site Web de Microsoft.


@MDDUDLEY - C'est étrange. Je pensais que tout le point était que cela configurait tout préerqs en cliquant.


@ROB Allen: Vous avez peut-être raison. Stackoverflow.com/Questtions/955309/...