Assembly.GetTypes()

本文关键字:GetTypes Assembly | 更新日期: 2023-09-27 18:16:07

我有这个在我的代码:

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()并停止执行。什么可能导致assembly.GetTypes()在调试时与使用exe时的工作方式不同?

Assembly.GetTypes()

看看这个链接:

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

永远不要使用Assembly.LoadFile()。如果知道,可以使用LoadFrom()程序集位于哪里,使用Load()让。net找出在哪里大会已就位。使用Load()应该是您的首选,但是可能需要一个.config文件来帮助。net找到程序集

感谢@HansPassant

当你创建一个exe文件时,你必须确保你的程序集在正确的文件夹中,并且exe文件可以访问该文件夹。

您可以订阅该事件并从您已知的位置执行简单的Assembly.LoadFrom,甚至可以基于您设计的某些系统执行一些自己的花哨加载。在AppDomain中还有TypeResolveResourceResolve事件,它们允许您处理解决AppDomain的各种依赖关系的那些方面。