使用反射加载依赖 DLL

本文关键字:依赖 DLL 加载 反射 | 更新日期: 2023-09-27 18:31:56

在我的c#应用程序中,我使用反射来加载"A.dll"并使用其方法来显示记录集合。

在代码中,我在运行时从另一个文件夹(d:''loader''A.dll)加载dll。

Assembly dataAssembly = null;
dataAssembly = Assembly.LoadFrom("d:'loader'A.dll");

但是我错过了 datagridview 中的一些列数据,并发现将存在于 A.dll 中的同一文件夹中的 B.dll 放入我的 exe 执行路径可以解决问题。但是,A.dll 不直接引用 B.dll B.dll 也不显示在 dataAssembly 的引用组合中。

            dataAssembly.GetReferencedAssemblies()
            .Select(assemblyName => assemblyName.FullName);

现在我有一个解决方案,在 exe 执行路径中需要 B.dll 来显示数据,但不知何故,我被限制在生产环境中添加它。

我不知道 B 里面有什么.dll但我 100% 确定我需要在我的应用程序中访问 A.dll 时加载它。

由于我使用反射来加载 A.dll ,我想了解如何处理这种情况,以便我的应用程序能够在运行 A.dll 方法时找到 B.dll。

B.dll 的文件夹路径与 A.dll 的文件夹路径相同。

对不起,请原谅我缺乏理解,但如果您有任何线索或提示,请告知。

使用反射加载依赖 DLL

我认为你需要AppDomain.AssemblyResolve事件。 挂钩到此事件将允许您根据需要指定依赖程序集的路径。