获取程序集所需的程序集?

发布于 2024-10-15 18:01:00 字数 181 浏览 7 评论 0原文

我正在程序中加载程序集 X.dll,其中 X.dll 可以是任何内容,并且我创建了类 X.A_Class 的实例代码>.但是,如果程序集 X 需要程序集 A、B、C 和 D 该怎么办? ?
我如何检测到这一点?
如何加载它们而不将它们保存在变量中?

I am loading an assembly X.dll in my program, where X.dll can be anything, and I create an instance of the class X.A_Class. But what if the assembly X requires assemblies A, B, C and D?
How do I detect this?
How do I load them without holding them in a variable?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

和我恋爱吧 2024-10-22 18:01:01

引用的程序集通常会自​​动加载(请参阅相关消息,例如 如何解析程序集.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/ )

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

Refferenced assemblies normally will be loaded automatically (see related messages like How is an assembly resolved in .NET? for starting links).

If you are loading assemblies not from standard locations (like GAC and application's root folder) you may need either setup path to load referenced assemblies from (search for "assembly default load path" - i.e. app config file - http://msdn.microsoft.com/en-us/library/823z9h8w.aspx) or load them yourself from AssemblyReslove event as mentioned in other answers.

The best way to start debugging the issues with loading assemblies is read blogs at: http://blogs.msdn.com/b/suzcook/archive/2003/05/29/57120.aspx (and related posts http://blogs.msdn.com/b/suzcook/archive/tags/loader+debugging+advice/ )

EDIT: folder -> "root folder" + link to config file topic for probing paths.

夏九 2024-10-22 18:01:00

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

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

You can use Assembly.GetReferencedAssemblies as @alexn mentioned, and then use Assembly.Load to load them. Alternatively, you can hook AppDomain.CurrentDomain.AssemblyResolve and load them on demand.

If you do need to iterate them, make sure you do it recursively to get transitive dependencies.

自由范儿 2024-10-22 18:01:00

You can get the referenced assemblies for an assembly with the Assembly.GetReferencedAssemblies method.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文