Montage.gettypes ()
-
26-10-2019 - |
Frage
Ich habe das in meinem Code:
Assembly assembly = Assembly.LoadFile(dllFile);
//dllFile has the correct value of a path of a .dll file
foreach (Type type in assembly.GetTypes()) {...}
Wenn ich mein Programm debugge, funktioniert alles gut. Wenn ich das EXE für mein Programm erstelle, kommt der Code zur Assembly.gettypes () und stoppt die Ausführung. Was könnte dazu führen, dass die Assembly.gettypes () anders funktioniert, wenn ich von der Verwendung des EXE debuggiere?
Lösung
Schauen Sie sich diesen Link an:
http://social.msdn.microsoft.com/forums/en-us/netfxbcl/thread/3bdaf65c-520c-4a1a-a825-fc2ca2957bf3/
Sie sollten niemals montags.loadfile () verwenden. Verwenden Sie LOADFROM () Wenn Sie wissen, wo sich die Baugruppe befindet, verwenden Sie LOAD (), um .NET herauszufinden, wo sich die Baugruppe befindet. Verwenden von Load () sollte Ihre Präferenz sein, benötigen jedoch möglicherweise eine .config -Datei, um .NET zu helfen, die Baugruppe zu finden
Gutschrift an @Hanspassant
Andere Tipps
Wenn Sie eine EXE -Datei erstellen, müssen Sie sicherstellen, dass sich Ihre Baugruppen im richtigen Ordner befinden und dass die EXE -Datei Zugriff auf den Ordner hat.
Sie können diese Veranstaltung abonnieren und ein einfaches machen Assembly.LoadFrom
Von einem Ihnen bekannten Standort oder sogar ein ausgefallenes geladenes Laden, basierend auf einem System, den Sie Engineer haben. Es gibt auch TypeResolve
und ResourceResolve
Ereignisse in der AppDomain
Damit können Sie diese Aspekte der Lösung der verschiedenen Abhängigkeiten von einem behandeln AppDomain
. Für Details sehen Sie dies Microsoft Forum Thread.