【发布时间】:2012-02-16 12:22:51
【问题描述】:
我有一个 C# 应用程序,我们称之为 App.exe。它引用了一个名为 A.dll 的 DLL,而 A.dll 又引用了另一个 DLL,即 B.dll。然而,它们被引用的方式有点不同。在 A.dll 的代码中,它直接引用了 B.dll(通过转到 Project > References > Add B.dll)。但是我的 App.exe 有代码可以在运行时使用 Assembly.Load() 等加载 A.dll。
回顾一下,
App.exe ----(运行时加载)---> A.dll ----(直接引用)---> B.dll
所有三个东西(App.exe、A.dll 和 B.dll)都驻留在同一个目录中,比如说 ExeDir。现在我要做的是,将 A.dll 和 B.dll 放在 ExeDir 的子目录中。我可以通过使用指定 A.dll 路径的 App.config 文件并要求 App.exe 从该路径加载 A.dll 来做到这一点。到目前为止一切顺利。
但是问题是,当我这样做时,.NET 给我一个错误,说它找不到与 A.dll 位于同一目录中的 B.dll。如果我将它移回原始目录(与 App.exe 相同的目录),那么它可以正常工作。这意味着,我可以将 A.dll 放在子目录中,但 B.dll 需要在原始目录中。
有什么方法可以将两个 DLL 都保存在子目录中?
【问题讨论】: