【发布时间】:2014-11-20 00:19:46
【问题描述】:
在 C# .NET 4.0 中,我正在创建一个我计划在许多其他项目中重用的类库/DLL。这个类库本身将使用几个 DLL。例如,我正在创建的类库可能会引用几个 DLL,例如:
ServerConnectorLibrary references:
Lib1.dll
Lib2.dll
Lib3.dll
当我构建它时,我在 bin\Debug 文件夹中得到 ServerConnectorLibrary.dll 作为输出。
我现在想要的是在其他项目中使用这个ServerConnectorLibrary.dll。但是,当我将 DLL 添加到我的新项目并运行时,我收到以下错误:
FileNotFoundException: Could not load file or assembly "Lib1.dll".
如果我将Lib1.dll 添加到我的新项目的bin\Debug 文件夹中,问题并没有解决。
【问题讨论】:
-
这很正常,如果 ServerConnectorLibrary.dll 引用 Lib1.Dll 则它依赖于它,因此如果您引用 ServerConnectorLibrary.dll,那么您还需要引用 Lib1.Dll 和所有其他依赖项。将依赖的DLL复制到Bin文件夹中不是个好主意,请正确引用。
-
感谢您的建议。在 Visual Studio 中,我对 DLL 的引用是绝对文件路径。当我将我的应用程序发送到另一台计算机时,那台计算机显然没有 DLL。究竟如何引用它以便我可以部署应用程序和 DLL?
-
只要所有引用的 DLL 都将
CopyLocal设置为 true(通常是默认值),那么当您编译应用程序时,它们就会被复制到 Bin 目录。它们在任何给定机器上的位置与部署应用程序并不真正相关,但它们是项目文件中的相对路径,它们只是在属性窗口中显示为绝对路径。 -
使用 Fuslogvw.exe 解决程序集解析问题。