我的代码中有这个:
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时进行调试时工作方式不同?
答案 0 :(得分:3)
看一下这个链接:
http://social.msdn.microsoft.com/Forums/en-US/netfxbcl/thread/3bdaf65c-520c-4a1a-a825-fc2ca2957bf3/
你永远不应该使用Assembly.LoadFile()。如果您知道,请使用LoadFrom() 在程序集所在的位置,使用Load()让.NET找出位置 组件位于。使用Load()应该是你的偏好,但是 可能需要一个.config文件来帮助.NET找到程序集
归功于@HansPassant
答案 1 :(得分:1)
创建exe文件时,必须确保程序集位于正确的文件夹中,并且exe文件也可以访问该文件夹。
答案 2 :(得分:0)
您可以订阅该活动并从您已知的位置执行简单的Assembly.LoadFrom
,或者根据您工程师的某个系统自行加载您自己的活动。 TypeResolve
中还有ResourceResolve
和AppDomain
个事件,可让您处理解决AppDomain
各种依赖关系的方面。有关详细信息,请参阅此Microsoft forum thread。