我有一个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。
因此,简单来说:
然而问题是,当我这样做时,.NET会给我一个错误,说它无法找到与A.dll在同一目录中的B.dll。如果我将它移回原始目录(与App.exe在同一目录中),那么它就正常工作。这意味着,我可以把A.dll放在子目录中,但B.dll需要在原始目录中。
有没有办法让这两个DLL文件都保留在子目录中?
因此,简单来说:
所有三个文件(App.exe、A.dll和B.dll)都驻留在同一个目录中,比如ExeDir。现在我想把A.dll和B.dll放在ExeDir的一个子目录中。我可以使用一个App.config文件指定A.dll的路径,并要求App.exe从该路径加载A.dll。到目前为止都很好。App.exe ----(运行时加载)---> A.dll ----(直接引用)---> B.dll
然而问题是,当我这样做时,.NET会给我一个错误,说它无法找到与A.dll在同一目录中的B.dll。如果我将它移回原始目录(与App.exe在同一目录中),那么它就正常工作。这意味着,我可以把A.dll放在子目录中,但B.dll需要在原始目录中。
有没有办法让这两个DLL文件都保留在子目录中?
BIN
文件夹中搜索,但也会搜索bin2
文件夹、bin2\subbin
文件夹和bin3
文件夹。将bin;bin2\subbin;bin3
替换为A.dll和B.dll所在的文件夹(相对于EXE程序)。请注意,如果A.dll包含在探测路径中,则无需指定A.dll的路径。 - D Stanley