我的代码中有这样的代码:
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时的工作方式不同?
发布于 2011-11-30 20:39:32
看看这个链接:
http://social.msdn.microsoft.com/Forums/en-US/netfxbcl/thread/3bdaf65c-520c-4a1a-a825-fc2ca2957bf3/
您永远不应该使用Assembly.LoadFile()。如果您知道程序集所在的位置,请使用LoadFrom()让.NET确定程序集所在的位置。使用Load()应该是您的首选,但可能需要.config文件来帮助.NET查找程序集
归功于@HansPassant
发布于 2011-11-30 19:40:59
创建exe文件时,必须确保程序集位于正确的文件夹中,并且exe文件有权访问该文件夹。
发布于 2013-01-05 07:11:11
您可以订阅该事件并从您已知的位置执行一个简单的Assembly.LoadFrom,甚至可以根据您设计的某个系统进行一些奇特的加载。AppDomain中还有TypeResolve和ResourceResolve事件,允许您处理解析AppDomain的各种依赖项的这些方面。有关详细信息,请参阅此Microsoft forum thread。
https://stackoverflow.com/questions/8325148
复制相似问题