启动 IIS Express 托管 Web 项目时无法加载 DLL (VS2015)

Unable to load DLLs when starting up IIS Express hosted web project (VS2015)

背景:

我正在将控制台应用程序迁移到我们现有的 Web API 项目中。所有开发工作都在 Visual Studiod 2015(使用 IIS Express)上完成。该应用程序使用很少的第三方数据源 api DLL 从该数据源获取数据。所有这些 DLL 都由我们的内部 nuget 包源管理。

问题:

现在控制台应用程序运行良好,可以加载那些 DLL。我将整个逻辑复制到我的 Web 项目中,并通过 nuget 添加了 DLL。解决方案构建但在启动 Web 项目时出现以下错误:

Could not load file or assembly 'ABC.DLL' or one of its dependencies. The specified module could not be found. 

其中 ABC.DLL 是第三方 DLL 之一。

我做了以下事情:

关于最后一步,bin 文件夹中的那些 dll 都丢失了(但最后 4 个 DLL 应该在 system32 win 目录中所以应该无关紧要?)

至于XYZ.dll,它是另一个第三方库,位于C:\Program Files (x86)\XYZ\文件夹中。我手动将它复制到 Web 项目 bin 文件夹(实际上复制到 XYZ 文件夹内的所有 Dll),但仍然遇到同样的问题。

问题

提前致谢!

简单地将外部 DLL 添加到您的 Bin 文件夹并不是一个好主意。文件可能会出于各种原因从该文件夹中消失,例如您的团队成员删除了看似无用的 DLL,或通过 Visual Studio 清除它。此外,您的解决方案中引用项目的输出 DLL 将在那里结束,并在您每次构建项目时被替换。

对于第三方 DLL,您应该做的是在您的项目中或附近创建一些 "dependencies" 文件夹,然后将 DLL 粘贴到其中。然后您应该右键单击该项目,select 添加引用,浏览到新的 "dependencies" 文件夹,然后以这种方式添加对 DLL 的引用。这类似于 NuGet 的工作方式;它将 DLL 保存在 packages 文件夹内各自的文件夹中,并添加对这些 DLL 的引用。

我终于找到了问题并感谢所有帮助,我不得不在 VS 中禁用卷影复制(在 64 bit managed assembly with unmanaged dependencies not loading in IIS / ASP.NET MVC 4 中提到)。