2010-07-18 95 views
2

我试图通过Assembly.LoadFrom将我的插件添加到我的应用程序中,我想知道是否有一个属性知道装入了什么类型的程序集 - 动态链接的库和可执行文件可以加载,对吗?如何确定Assembly.LoadFrom确实加载了一个DLL文件?

谢谢!

+0

不知道我理解的问题 - 除非*执行*,包含程序集的exe仍然只是一个程序集包。你不能在这里使用'Path.GetExtension()'吗? – 2010-07-18 21:11:24

+0

同意。谁在乎文件扩展名是什么?与非托管代码相比,托管代码有点不同寻常。但这是非托管代码的一个缺陷。代码==代码,无论名称在包装上。功能,而不是一个错误。 – 2010-07-18 22:10:20

+0

这是一种偏离主题,但我建议你看看MEF,因为它是一个非常好用的框架,可以将插件功能添加到您的应用程序中。 – 2010-07-18 22:32:06

回答

6

您可以确定由LoadFrom函数返回的程序集是否使用Assembly.EntryPoint属性加载了EXE或DLL。如果该属性为入口点函数返回一个MethodInfo,那么你正在处理一个EXE。

从MSDN:

类型: System.Reflection.MethodInfo一个对象 表示的 该组件的入口点。如果没有找到入口点 (例如,该程序集是一个 DLL),则返回null。

http://msdn.microsoft.com/en-us/library/system.reflection.assembly.entrypoint.aspx

+0

谢谢!我明天会让你高兴。 – 2010-07-18 22:58:06

1

如果你想知道,如果它是一个.exe或.dll的,你可以检查Assembly.Location

相关问题