2010-01-11 4 views
0

J'ai une solution en C# qui a 1 projet principal Kingrey (exe) et un projet appelé DllReporter et un autre appelé ProductReportClasses.Comment forcer toutes les DLL à ajouter au domaine actuel?

Lorsque je tente de lister tous les ensembles dans mon exe du niveau de DllReporter:

AppDomain.CurrentDomain.GetAssemblies() 

Je ne reçois que Kingrey et DllReporter, mais pas ProductReportClasses.

Mais quand je di cela avant d'obtenir des assemblages dans le code principal de Kingrey:

ProductReportClasses.ClassBasic b = new ProductReportClasses.ClassBasic(); 

et que AppDomain.CurrentDomain.GetAssemblies d'utilisation() que je reçois tous les 3 ensembles comme supposé. Donc, ma question est: comment obtenir tous les assemblages ou forcer tous les assemblages à être listés dans GetAssemblies?

Répondre

0

Réponse simple: Si vous A) connaître toutes les assemblées que vous voulez avoir chargé dans le appdomain et 2) connaître un type de chaque assemblage, vous pouvez les forcer à charger en procédant comme suit

Type temp = typeof(ClassInAssemblyA); 
temp = typeof(ClassInAssemblyB); 
temp = typeof(ClassInAssemblyC); 

quelque part près du début de l'exécution de votre application. Cela semble un peu hacky et c'est. Mais cela fonctionne (aussi longtemps que vous vous qualifiez pour A et 2 ci-dessus et référence assemblées A, B et C) et est simple à faire.

+0

Malheureusement, je ne sais pas –

+0

Ensuite, vous devez parcourir tous les assemblages dans un emplacement spécifique et les charger dans le domaine actuel en premier. http://msdn.microsoft.com/en-us/library/25y1ya39.aspx La question devient alors quels répertoires recherchez-vous. – Will

+0

Je ne peux pas faire cela parce que j'ai plus de dlls d'autres projets dans le même dossier –

Questions connexes