2

X.dll在我的程序中加载一个程序集,X.dll可以是任何东西,我创建了一个类的实例X.A_Class。但是,如果程序集需要X程序集AB和怎么办? 我如何检测到这一点? 如何加载它们而不将它们保存在变量中?CD

4

3 回答 3

4

您可以像@alexn 提到的那样使用Assembly.GetReferencedAssemblies,然后使用Assembly.Load加载它们。或者,您可以挂钩AppDomain.CurrentDomain.AssemblyResolve并按需加载它们。

如果您确实需要迭代它们,请确保您递归地执行它以获得传递依赖。

于 2011-02-02T20:29:07.617 回答
2

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

于 2011-02-02T20:22:39.610 回答
0

引用的程序集通常会自​​动加载(请参阅相关消息,例如如何在 .NET 中解析程序集?以获取启动链接)。

如果您不是从标准位置(如 GAC 和应用程序的根文件夹)加载程序集,您可能需要任一设置路径来加载引用的程序集(搜索“程序集默认加载路径” - 即应用程序配置文件 - http://msdn.microsoft .com/en-us/library/823z9h8w.aspx)或从 AssemblyReslove 事件中自己加载它们,如其他答案中所述。

开始调试加载程序集问题的最佳方法是阅读博客:http: //blogs.msdn.com/b/suzcook/archive/2003/05/29/57120.aspx(以及相关帖子http://blogs .msdn.com/b/suzcook/archive/tags/loader+debugging+advice/ )

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

于 2011-02-02T21:05:21.460 回答