J'ai un assemblage. Existe-t-il un moyen de détecter quelle version de .NET a été utilisée pour créer cet assembly?Comment obtenir la version .NET (1.1, 2.0, 3.0 etc.) sous laquelle un assemblage a été construit?
Répondre
Vous pouvez éventuellement utiliser Assembly.ImageRuntimeVersion. Selon le MSDN docs, par défaut, il est défini sur la version du CLR utilisée pour générer l'assembly. Bien que apparemment, il peut être changé.
C'est une propriété de chaîne, donc vous devriez faire une comparaison de chaînes.
Je ne crois pas. Il est relativement difficile de créer une application .NET 1.1 avec .NET 2.0, bien que ce ne soit pas impossible - donc si vous avez coché la version de mscorlib référencée, vous pouvez obtenir une image "probablement exacte" de la version 1.1 ou 2.0 +.
Vous devrez également vous demander quelle réponse vous souhaitiez lors de l'utilisation de VS2008 mais si vous compiliez une cible de .NET 2.0. Êtes-vous réellement intéressé par la version du compilateur utilisée? Il peut y avoir des différences caractéristiques entre la sortie de différentes versions du compilateur. Des fonctionnalités supplémentaires peuvent également l'offrir: si l'application a été écrite en C# ciblant .NET 2.0, vous pouvez trouver des types qui semblent avoir été générés à partir de types anonymes dans le code source. Bien sûr, cela dépend de la fonctionnalité de langue utilisée en premier lieu ...
Pourquoi avez-vous besoin de savoir cela, par intérêt?
Vous pouvez utiliser System.Reflection pour vérifier le numéro de version des assemblys référencés par le système.
using System;
using System.Reflection;
class Module1
{
public static void CheckReferencedAssemblies(string assemblyPath)
{
Assembly a = Assembly.Load(assemblyPath);
foreach (AssemblyName an in a.GetReferencedAssemblies())
{
// Check an.Version for System assemblies
}
}
}
Modifier: Je ne suis pas sûr d'avoir compris ce que vous voulez.
Une partie du problème avec votre question est que .NET a fait un très bon travail de ne pas changer le code à mesure que les versions augmentent. J'entends par là que le mscorlib sera le même dans .NET 4.0 que dans .NET 1.1. Mais je suis d'accord avec la question implicite de Jon Skeet: Pourquoi avez-vous besoin de savoir? Est-ce purement par intérêt, parce que je pense que cela ne devrait pas avoir d'importance pour vous.
Pour les frameworks < 2.0 et framework 4.0, la version du mscorlib référencé vous donnera la version framework. Pour les frameworks 2.0 à 3.5, vérifiez la présence de toute référence à System.Core ou à l'un des autres assemblages 3.5+, et à PresentationCore ou à tout autre assemblage 3.0+. Si vous n'en avez aucun, il devrait cibler 2.0.
- 1. Assemblage .NET 1.1 dans le projet .NET 2.0: .NET 1.1 est-il requis?
- 2. Comment puis-je travailler simultanément sur la version 1.1 et la version 2.0?
- 3. Exécution d'une application ASP.NET 1.1 sous 2.0
- 4. Comment puis-je obtenir par programmation la version de Visual Studio avec laquelle mon application a été construite?
- 5. Comment vérifier si un assemblage a changé
- 6. Comment obtenir quels fichiers ont été modifiés de la version précédente à cette version et qui a fait les changements dans la sous-version
- 7. (ASP.NET) Comment déterminer la durée pendant laquelle un utilisateur a été sur le site?
- 8. How2 dans Configuration Net 2.0: Ajouter un élément à la section définie dans un assemblage différent
- 9. Comment puis-je obtenir l'heure à laquelle un fichier a été modifié pour la dernière fois en Python?
- 10. Comment obtenir la version IIS via .NET
- 11. simulateur iPhone ne pas afficher une erreur dans la version 3.0, mais affiche dans la version 2.0
- 12. ASP.NET 2.0 Site Web utilise .NET framework 3.0 DLL
- 13. Utilisation d'espaces de noms .net 3.0 dans .net 2.0
- 14. Problèmes de conversion d'applications ASP.NET de 1.1 Framework vers la version 2.0?
- 15. La connexion sous-jacente a été fermée: La connexion a été fermée de manière inattendue.
- 16. Exécution d'un logiciel construit pour .NET 3.5 sur un système avec seulement .NET 2.0 installé
- 17. Assemblages consommant du code C# 2.0 compilés avec C# 3.0
- 18. Comment obtenir Hpricot 0.6 Gem Construit sous FreeBSD?
- 19. Migration: ASP.NET 1.1 vers ASP.NET 2.0, postback brisé
- 20. Comment charger une version spécifique d'un assemblage
- 21. Obtenir la version .NET Framework dans VB.NET
- 22. Est-ce que .Net 4.0 inclura un nouveau CLR ou gardera avec la version 2.0
- 23. Nant et ASP/.NET 1.1: s'entendent-ils?
- 24. Comment créer et démarrer un thread paramétré dans .NET 1.1?
- 25. Comment IDisposable est-il implémenté sur FileStream dans .Net 1.1
- 26. Comment indiquer à IIS 6 de définir la version .NET sur 2.0 (et non sur 1.1) lors de la création de nouveaux sites?
- 27. Assemblage sous Linux
- 28. Comment puis-je mettre à niveau un site Web .NET 2.0 vers la version 3.5?
- 29. SAML avec .NET 2.0
- 30. Comment éviter de redéfinir VERSION, PACKAGE, etc
Donc, probablement, cela permettrait de distinguer entre 1.1 et 2.0, mais rien de plus que cela (jusqu'à ce que 4.0 sort)? –
Cela semble être le cas. J'ai un assemblage récemment construit ici rapportant "v2.0.50727" ... C'est avec 3.5 SP1 pas de numéro de build info. – ckramer