Cette question n'est pas tant liée à la programmation qu'au déploiement.
Je me retrouve beaucoup à converser avec le groupe de mon entreprise dont le travail est de maintenir nos serveurs Windows de production et d'y déployer notre code. Pour des raisons juridiques et de conformité, je n'ai pas de visibilité directe ni de contrôle sur les serveurs, donc la seule façon de savoir quelle (s) version (s) de .NET sont installées sur l'une d'entre elles est de suivre les instructions que je donne à ce groupe.
Jusqu'à présent, toutes les méthodes auxquelles je peux penser pour savoir quelle (s) version (s) sont installées (vérifiez les outils d'administration correspondant à 1.1 ou 2.0, vérifiez les entrées dans la liste "Ajout / Suppression de programmes", vérifiez l'existence du répertoires sous c: \ Windows \ Microsoft.NET) sont défectueux (j'ai vu au moins une machine avec 2.0 mais pas d'entrées 2.0 sous Outils d'administration - et cette méthode ne vous dit rien sur 3.0+, la liste "Ajout / Suppression de programmes" peut se désynchroniser avec la réalité, et l'existence des répertoires ne veut pas forcément dire quoi que ce soit).
Étant donné que j'ai généralement besoin de savoir que ces éléments sont en place à l'avance (découvrir que "oups, celui-ci n'a pas toutes les versions et tous les service packs dont vous avez besoin" ne fonctionne pas vraiment bien avec de courtes fenêtres de maintenance) et je dois faire la vérification "par proxy" puisque je ne peux pas accéder directement aux serveurs, quel est le moyen infaillible de savoir quelle (s) version (s) de .NET sont installées sur un serveur Windows de production? De préférence, une manière intrinsèque de le faire en utilisant ce que le framework installe car il sera plus rapide et ne nécessitera pas une sorte d'utilitaire pour être chargé et aussi une méthode qui échouera définitivement si les frameworks ne sont pas correctement installés mais ont toujours des fichiers en place (c.-à-d. , il y a un répertoire et gacutil.exe y est inscrit mais cette version du framework n'est pas vraiment "installée")
EDIT: En l'absence d'un bon moyen intrinsèque infaillible de le faire intégré dans le (s) Framework (s), est-ce que quelqu'un connaît un bon programme léger et sans installation qui peut le découvrir? J'imagine que quelqu'un pourrait facilement en écrire un mais s'il en existe déjà un, ce serait encore mieux.
la source
Réponses:
Vous devez ouvrir IE sur le serveur pour lequel vous recherchez ces informations et vous rendre sur ce site: http://www.hanselman.com/smallestdotnet/
C'est tout ce qu'il faut.
Le site a un script qui ressemble à "UserAgent" de votre navigateur et détermine quelle version (le cas échéant) du .NET Framework vous avez (ou n'avez pas) installé, et l'affiche automatiquement (puis calcule la taille totale si vous avez choisi pour télécharger le .NET Framework).
la source
Vous pouvez vérifier par programme le registre et quelques autres choses selon cette entrée de blog .
La clé de registre à examiner est
la source
Réponse trouvée d' ici :
Ouvrez l'invite de commande et copiez-collez l'une des lignes de commande ci-dessous
ou
la source
Selon la réponse de CodeTrawler , la solution consiste à entrer ce qui suit dans une fenêtre d'explorateur:
Recherchez ensuite:
... et cliquez avec le bouton droit de la souris / accédez à l'onglet de version pour chaque résultat.
la source
La méthode Microsoft est la suivante:
MSDN: Comment faire pour déterminer .NET Framework versions sont installées (qui vous dirige vers la clé de Registre suivante:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\...
)Si vous voulez une solution infaillible, c'est autre chose. Je ne m'inquiéterais pas d'une copie x du dossier du framework. Si quelqu'un faisait cela, je considérerais que l'ordinateur est cassé.
Le moyen le plus infaillible serait d'écrire un petit programme qui utilise chaque version de .NET et les bibliothèques qui vous intéressent et de les exécuter.
Pour une méthode sans installation, PowerBasic est un excellent outil. Il crée de petits exe sans exécution requise. Il pourrait automatiser les vérifications décrites dans l'article MS KB ci-dessus.
la source
http://www.asoft.be/prod_netver.html
Utilisez ce "bon programme léger, sans installation requise"
la source
Si l'ordinateur que vous souhaitez vérifier a le SDK .NET installé, vous pouvez utiliser une invite de commande SDK et exécuter le programme
CLRVer.exe
.la source
La réponse officielle de Microsoft sur la façon de procéder se trouve dans l' article 318785 de la base de connaissances .
la source
Le déploiement OneTouch effectuera toute la détection et l'installation des pré-requis. Il est probablement préférable d'utiliser une solution préfabriquée que d'essayer de créer la vôtre. Essayer de lancer le vôtre peut entraîner des problèmes, car tout élément sur lequel vous entrez peut changer avec un correctif ou un service pack. Microsoft a probablement une heuristique pour déterminer quelle version est en cours d'exécution.
la source
Le moyen officiel de détecter .NET 3.0 est décrit ici
http://msdn.microsoft.com/en-us/library/aa480198.aspx
Imparfait, car il oblige l'appelant à disposer des autorisations d'accès au registre.
MSDN mentionne également une technique pour détecter .NET 3.5 en vérifiant la chaîne de l'agent utilisateur:
http://msdn.microsoft.com/en-us/library/bb909885.aspx
Je pense que Microsoft aurait dû faire un meilleur travail que cela.
la source
Consultez également la question sur le débordement de pile Comment détecter les versions et les Service Packs de .NET Framework installés? qui mentionne également:
ID de l'article: 318785 - Dernière mise à jour: 7 novembre 2008 - Révision: 20.1 Comment déterminer quelles versions de .NET Framework sont installées et si les service packs ont été appliqués.
Malheureusement, cela ne semble pas fonctionner, car la
mscorlib.dll
version du répertoire 2.0 a une version 2.0 et il n'y a aucunemscorlib.dll
version dans les répertoires 3.0 ou 3.5 même si 3.5 SP1 est installé ... Pourquoi la réponse officielle de Microsoft serait si mal informé?la source
Pour déterminer la prise en charge par votre serveur de .NET Framework 4.5 et versions ultérieures (testées via 4.5.2): Si vous ne disposez pas d'un accès au Registre sur le serveur , mais que vous disposez des droits de publication d'applications sur ce serveur, créez une application MVC 5 avec un élément trivial contrôleur, comme ceci:
Ensuite, dans votre Web.config, parcourez les versions de .NET Framework souhaitées dans la section suivante, en modifiant les
targetFramework
valeurs comme vous le souhaitez:Publiez chaque cible sur votre serveur, puis accédez à
<app deploy URL>/Default
. Si votre serveur prend en charge le framework cible, la chaîne simple s'affichera à partir de votre contrôleur trivial. Sinon, vous recevrez une erreur comme celle-ci:Donc, dans ce cas, mon serveur cible ne prend pas encore en charge .NET Framework 4.5.2.
la source
Pour obtenir la version dotnet installée,
créez une application console. Ajoutez cette classe Exécutez cela
la source
Curieusement, j'ai écrit du code pour faire cela à la sortie de la 1.1 (qu'est-ce que c'était, il y a sept ans?) Et je l'ai légèrement peaufiné lorsque la version 2.0 est sortie. Je ne l'ai pas regardé depuis des années car nous ne gérons plus nos serveurs.
Ce n'est pas infaillible, mais je le poste quand même parce que je le trouve drôle; en ce que c'est plus facile à faire dans .NET et encore plus facile dans Power Shell.
la source
Eh bien, comme l'a dit Dean, vous pouvez consulter le registre et faire ce qu'il a fait. Pour vérifier s'il a vraiment installé CLR .NET Framework, vous devez rechercher le
MSCorEE.dll
fichier dans le%SystemRoot%\System32
répertoire.la source
C'est probablement une mauvaise façon de trouver des versions, mais j'ai toujours eu l'impression que toutes les versions étaient installées
<root>:\WINDOWS\Microsoft.NET\Framework
.Cela fournit des dossiers avec des noms tels que ceux
v2.0.50727
qui, je crois, donnent des informations détaillées sur la version.la source
Si vous souhaitez rechercher des versions antérieures à .NET 4.5, utilisez le code d'une application console. Comme ça:
Sinon, vous pouvez trouver .NET 4.5 ou version ultérieure en interrogeant comme ceci:
Ensuite, le résultat de la console vous indiquera quelles versions sont installées et disponibles pour une utilisation avec vos déploiements. Ce code est également utile, car vous les avez sous forme de solutions enregistrées à tout moment où vous souhaitez le vérifier à l'avenir.
la source
Je suis entré dans Windows Update et j'ai regardé l'historique des mises à jour, sachant que les correctifs du serveur sont maintenus à jour. J'ai recherché les mises à jour .NET et cela m'a montré exactement quelles versions avaient des mises à jour, ce qui m'a permis de conclure quelles versions étaient installées.
la source
J'ai trouvé celui-ci très utile. voici la source
la source