Question

Je dans mon code:

Assembly assembly = Assembly.LoadFile(dllFile);
//dllFile has the correct value of a path of a .dll file
foreach (Type type in assembly.GetTypes()) {...}

Quand je déboguer mon programme, tout fonctionne bien. Lorsque je crée l'exe pour mon programme, le code est à assembly.GetTypes () et arrête l'exécution. Ce qui pourrait causer assembly.GetTypes () à travailler différemment quand je suis débogage à partir lorsque j'utilise l'exe?

Était-ce utile?

La solution

Jetez un oeil à ce lien:

http: //social.msdn.microsoft.com/Forums/en-US/netfxbcl/thread/3bdaf65c-520c-4a1a-a825-fc2ca2957bf3/

Vous ne devez jamais utiliser Assembly.LoadFile (). Utilisez LoadFrom () si vous connaissez où laisser la figure .NET où l'on trouve l'ensemble, l'utilisation de charge () l'ensemble se trouve. En utilisant Load () devrait être votre préférence, mais peut exiger un fichier .config à l'aide .NET trouver l'assemblage

@HansPassant

Autres conseils

Lorsque vous créez un fichier exe, vous devez vous assurer que vos assemblages sont dans le bon dossier et que le fichier exe a accès au dossier.

Vous pouvez vous abonner à cet événement et faire un simple Assembly.LoadFrom d'un endroit connu pour vous ou même faire un peu de fantaisie chargement de votre propre basé sur un système vous ingénieur. Il y a aussi des événements TypeResolve et ResourceResolve dans le AppDomain qui vous permettent de gérer les aspects de la résolution des différentes dépendances d'un AppDomain. Pour plus de détails voir cette fil Microsoft forum .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top