获得装配所需的装配?

时间:2011-02-02 20:17:55

标签: c# assembly-resolution

我正在我的程序中加载程序集X.dll,其中X.dll可以是任何内容,我创建了类X.A_Class的实例。但是,如果程序集X需要程序集ABCD,那该怎么办? 我怎么检测到这个?
如何在不将它们保存在变量中的情况下加载它们?

3 个答案:

答案 0 :(得分:4)

您可以使用Assembly.GetReferencedAssemblies作为@alexn提及,然后使用Assembly.Load加载它们。或者,您可以挂钩AppDomain.CurrentDomain.AssemblyResolve并按需加载它们。

如果您确实需要迭代它们,请确保以递归方式执行此操作以获得传递依赖项。

答案 1 :(得分:2)

您可以使用Assembly.GetReferencedAssemblies方法获取程序集的引用程序集。

答案 2 :(得分:0)

通常会自动加载引用的程序集(请参阅How is an assembly resolved in .NET?等相关消息以获取启动链接)。

如果您不是从标准位置(如GAC和应用程序的根文件夹)加载程序集,则可能需要设置路径来加载引用的程序集(搜索“程序集默认加载路径” - 即应用程序配置文件 - {{3}或者自己从AssemblyReslove事件中加载它们,如其他答案中所述。

开始调试加载程序集问题的最佳方法是阅读以下博客:http://msdn.microsoft.com/en-us/library/823z9h8w.aspx(及相关帖子http://blogs.msdn.com/b/suzcook/archive/2003/05/29/57120.aspx

编辑:文件夹 - > “根文件夹”+指向探测路径的配置文件主题的链接。