首页 > 后端开发 > C++ > 如何将程序集及其依赖项递归加载到 AppDomain 中?

如何将程序集及其依赖项递归加载到 AppDomain 中?

Linda Hamilton
发布: 2025-01-15 12:24:45
原创
308 人浏览过

How to Recursively Load Assemblies and Their Dependencies into an AppDomain?

AppDomain:递归程序集加载和依赖关系管理

将程序集及其依赖项加载到新的 AppDomain 中可能很棘手。 对于初学者来说,常见的 FileNotFoundException 通常是由于缺少依赖项而产生的。

理解问题

要记住的一个关键点是,当您将程序集加载到 AppDomain 中时,它引用的程序集不会自动加载。 这需要递归加载以确保所有依赖项都可用。 如果不这样做会导致错误,例如:

“无法加载文件或程序集“MyDll,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null”或其依赖项之一。系统找不到指定的文件。”

这个错误清楚地表明需要递归依赖加载。

手动解决依赖关系

一种常见的尝试涉及迭代根程序集的引用并单独加载它们。但是,这通常会导致引用的程序集自身的依赖项出现重复的 FileNotFoundException 错误。

关键步骤:CreateInstanceAndUnwrap

解决方案在于在目标 AppDomain 中执行代理对象之前使用 CreateInstanceAndUnwrap。这可确保代理在其指定的 AppDomain 内正确运行。

LoadFileLoadFrom

使用 LoadFrom 可能会导致问题,因为它会搜索 GAC 或应用程序的 bin 文件夹。 为了避免这种情况,请使用LoadFile。 请记住,您仍然负责自己递归加载依赖项。

总结

成功地将程序集及其依赖项加载到 AppDomain 中需要仔细的递归依赖项加载。 使用 CreateInstanceAndUnwrap 并选择 LoadFile 而不是 LoadFrom 将帮助您有效管理引用的程序集。

以上是如何将程序集及其依赖项递归加载到 AppDomain 中?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板