使用反射加载相关DLL

时间:2014-11-26 04:59:07

标签: c# dll reflection runtime .net-assembly

在我的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的文件夹路径相同。

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

这将有助于您使用 Assembly.GetReferencedAssemblies

Is there a way to force all referenced assemblies to be loaded into the app domain?