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?

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top