在我的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的文件夹路径相同。
对不起,请原谅我缺乏理解,但如果您有任何线索或提示,请提出建议。
答案 0 :(得分:0)
我认为你需要AppDomain.AssemblyResolve
事件。挂钩此事件将允许您根据需要指定依赖程序集的路径。
答案 1 :(得分:0)
这将有助于您使用 Assembly.GetReferencedAssemblies
Is there a way to force all referenced assemblies to be loaded into the app domain?