Meilleur moyen de déterminer si .NET 3.5 est installé
J'ai besoin de déterminer par programme si .NET 3.5 est installé. Je pensais que ce serait facile:
<% Response.Write(Environment.Version.ToString()); %>
Qui renvoie "2.0.50727.1434" donc pas de chance...
Dans mes recherches j'ai qu'il y a certains plutôt obscures, clés de registre, je peux regarder, mais je ne suis pas sûr si c'est la voie à suivre. Quelqu'un aurait-il des suggestions?
source d'informationauteur sestocker
Vous devez vous connecter pour publier un commentaire.
Vous pourriez essayer:
@Nick: Bonne question, je vais essayer un peu.
Kev
C'est parce que techniquement .NET 3.5 est une extension du framework 2.0. Le moyen le plus rapide est d'inclure une assemblée de .NET 3.5 et voir si elle se casse.
Est un bon assemblée qui est inclus uniquement dans la version 3.5. Aussi, il semble que vous utilisez ASP.NET pour exécuter cette case, c'est vraiment limite pour vous, car il vous sera impossible de vérifier les fichiers système ou le registre de l'exécution dans le mode protégé de ASP.NET. Ou vous pouvez toujours problématique essayez de charger un assembly dans le GAC qui ne devrait être .NET 3.5, cependant, vous pouvez courir dans des problèmes avec les autorisations de nouveau.
Cela peut être un de ces moments où vous vous demandez à votre auto "Que suis-je en train d'accomplir?" et voir si il y a des itinéraires alternatifs.
Une bonne ressource que j'ai trouvé:
http://www.walkernews.net/2008/05/16/how-to-check-net-framework-version-installed/
@Kev, vraiment comme votre solution. Merci pour l'aide.
À l'aide du registre le code devrait ressembler à quelque chose comme ceci:
Je serais curieux de savoir si l'un de ces serait de travailler dans un milieu de confiance de l'environnement (bien que je suis en train de travailler dans la confiance totale de sorte qu'il n'est pas question pour ce que je suis en train de travailler sur).
@komradekatz, votre solution ci-dessous à partir de MSDN pour plus de commodité pour les autres, la recherche dans ce. Je n'aime pas cette solution, car elle utilise l'agent de l'utilisateur pour déterminer la version. Ce n'est pas viable pour ce dont j'ai besoin (je suis en train d'écrire une bibliothèque de classe qui a besoin de savoir si .NET 3.5 est installé). J'ai aussi question quelle est la fiabilité de cette solution peut s'avérer être.
Sur ma machine ce sorties:
Une autre trouvaille intéressante est la présence des assemblées ici:
Vous pensez que Microsoft serait de construire une case à cocher pour "dernière version" dans le cadre.
Si vous voulez avoir besoin d'une version spécifique de .net pour être installé et peut contrôler la distribution de votre application, vous devriez vraiment utiliser ClickOnce. Il vous permet de spécifier la version minimum requise de l' .Net framework doit être installé, et cela seulement lorsqu'il est installé de sorte que tous vos démarrages ultérieurs ne sont pas entravés par une inutile de vérifier.
Aussi, avec ClickOnce, vous obtenez la mise à jour gratuitement. Pourquoi ne serait-il pas quelqu'un veux l'utiliser?
Pour configurer une application ClickOnce, juste un clic droit sur le projet dans Visual Studio et les Paramètres de publication. Cela va créer une compilation spéciale de votre application que vous pouvez placer sur votre site web. Lorsque les utilisateurs téléchargent le programme, le programme d'installation vérifie les conditions préalables comme .Net pour vous.
Une option est de détecter 4.0 à l'aide de la chaîne de version:
puis depuis la version 2.0 et 2.5 partager un CLR numéro de version, il faut le distenguished en consultant le registre. Depuis ces versions déjà, les chaînes à rechercher sont connus.
Sans assemblage de chargement et de la capture des exceptions (qui est lent), vérifier pour la classe changements de l'API entre 2,0 et 3,5. Mono Statut De Classe est très utile pour cela. Par exemple, vous pouvez vérifier pour
GC.Collect Method (Int32, GCCollectionMode)
qui est dans mscorlib et a été ajouté dans 3.5 .