Récupérer toutes les assemblys chargées dans .NET
Introduction
Dans le développement .NET, il est souvent nécessaire de connaître les assemblys qui sont actuellement chargés dans l'application. Cela peut être utile pour diverses raisons, par exemple pour comprendre les dépendances d'une application, pour inspecter les assemblys utilisés par un code tiers ou pour manipuler les assemblys chargés de manière dynamique.
Méthodes pour récupérer les assemblys chargés
Il existe plusieurs méthodes pour récupérer les assemblys chargés dans une application .NET. Voici quelques-unes des plus courantes :
1. Utilisation de la classe AppDomain
La classe AppDomain
représente un domaine d'application dans lequel s'exécute le code. Elle possède une propriété GetAssemblies()
qui renvoie un tableau de tous les assemblys chargés dans le domaine d'application actuel.
// Obtenir tous les assemblys chargés dans le domaine d'application
var assemblies = AppDomain.CurrentDomain.GetAssemblies();
// Affichages des noms des assemblys
foreach (var assembly in assemblies)
{
Console.WriteLine(assembly.FullName);
}
2. Utilisation de la classe Assembly
La classe Assembly
représente un assembly .NET. Elle possède une méthode statique GetExecutingAssembly()
qui renvoie l'assembly actuellement en cours d'exécution. Cette méthode permet de récupérer l'assembly qui contient le code en cours d'exécution.
// Obtenir l'assembly actuellement en cours d'exécution
var executingAssembly = Assembly.GetExecutingAssembly();
// Afficher le nom de l'assembly
Console.WriteLine(executingAssembly.FullName);
3. Utilisation de la classe Reflection
La réflexion permet d'inspecter et de manipuler des types, des méthodes et d'autres éléments d'un assembly à l'exécution. Il est possible d'utiliser la réflexion pour obtenir tous les assemblys chargés dans l'application.
// Obtenir tous les types dans tous les assemblys chargés
var types = AppDomain.CurrentDomain.GetAssemblies()
.SelectMany(a => a.GetTypes())
.ToList();
// Affichages des noms des types
foreach (var type in types)
{
Console.WriteLine(type.FullName);
}
Conclusion
La récupération des assemblys chargés dans .NET est une opération courante qui peut être réalisée à l'aide de plusieurs méthodes différentes. La méthode à utiliser dépend du contexte et des informations que vous souhaitez obtenir. Il est important de noter que certains assemblys peuvent être chargés de manière implicite et que leur récupération peut nécessiter des techniques plus avancées.