Considérons initialement le cas inverse. Si je veux énumérer tous mes types dans les assemblées que je l'ai fait référence dans mon application console je peux faireÉnumération des types dans l'application Console à partir d'une bibliothèque de classes
var assemblies = Directory.EnumerateFiles(
Directory.GetCurrentDirectory(),
"MyNamespace.*.dll",
SearchOption.TopDirectoryOnly)
.Select(Assembly.LoadFrom)
.SelectMany(x => x.GetTypes())
.ToList();
donc simple. Je dois faire l'opération inverse. En supposant que j'exécute une application de console et référence la bibliothèque de classes MyClassLibrary
, je voudrais obtenir tous les types dans mon application de console à l'intérieur d'une fonction dans MyClassLibrary
. Le problème est que les applications de la console ne produisent pas de fichiers dll
et ne produisent que des fichiers exe
. Est-il possible de lire les types?
Bien sûr, si vous avez trouvé le bon fichier .exe, vous pouvez charger cet assemblage exactement de la même manière. –
Je l'ai essayé, ça n'a pas fonctionné. J'ai essayé de lire les fichiers 'exe' à la place de' dll' mais il n'a pas été chargé dans mon tableau d'assemblage. – Arijoon
Eh bien, il fonctionnera pour les exécutables .NET réels. Il ne parviendra pas à charger les exécutables non-NET. Vous devriez éditer votre question pour montrer ce que vous avez essayé, et ce qui s'est passé. Une alternative serait d'utiliser 'Assembly.GetEntryAssembly'. –