Assembly.GetTypes()

时间:2011-11-30 11:25:25

标签: c# types .net-2.0 .net-assembly

我的代码中有这个:

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时进行调试时工作方式不同?

3 个答案:

答案 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中还有ResourceResolveAppDomain个事件,可让您处理解决AppDomain各种依赖关系的方面。有关详细信息,请参阅此Microsoft forum thread