我的代码中有这个:

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

当我调试程序时,一切正常。当我为程序创建EXE时,代码将用于assembly.getTypes()并停止执行。当我与使用EXE时调试时,什么可能导致assembly.getTypes()的工作方式不同?

有帮助吗?

解决方案

看看此链接:

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

您切勿使用assembly.loadfile()。使用loadfrom()如果知道组件的位置,请使用load()让.NET弄清楚组件的位置。使用load()应该是您的偏好

归功于 @hanspassant

其他提示

创建EXE文件时,必须确保您的组件位于正确的文件夹中,并且EXE文件可以访问该文件夹。

您可以订阅该事件并进行简单 Assembly.LoadFrom 从您已知的位置,甚至根据您的某些系统进行自己的精美负载。也有 TypeResolveResourceResolve 事件中的事件 AppDomain 这使您可以处理解决一个方面的各个方面 AppDomain. 。有关详细信息,请参见此 Microsoft论坛线程.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top