【发布时间】:2017-10-07 18:44:28
【问题描述】:
我们有一个第 3 方应用程序,它以 DLL 的形式提供 SDK,可用于开发连接到其服务的自定义应用程序。 DLL 与它所依赖的许多其他 DLL 一起位于第 3 方应用程序的目录中。 SDK 指南提供了通过 Visual Studio 创建测试应用程序的说明,它说要添加对 SDK DLL 的引用,并将 Copy Local 设置为 False。我创建了一个测试 Windows Forms .NET 应用程序,并按照说明添加了对 DLL 的引用,一切正常。但是,在 ASP.NET 应用程序中引用 DLL 会导致依赖的第 3 方 DLL 之一出现 FileNotFoundException 异常。
作为一个实验,我尝试将有问题的 DLL 的引用添加到我的项目中,并将 Copy Local 设置为 False,但得到了同样的错误。将Copy Local 设置为True 会更进一步,但随后在另一个 DLL 上失败。无论Copy Local 设置如何,添加对该DLL 的引用都会失败。
我认为这些问题与“标准”.NET 应用程序加载程序集的方式与 ASP.NET 应用程序之间的差异有关,但我不太确定应该如何解决这个问题。
是否有适当的方法来引用 ASP.NET 应用程序中的第 3 方 DLL(及其依赖项)而不将它们放在 GAC 或应用程序的 bin 目录中?
【问题讨论】:
-
有很多方法可能会出错,因此无法根据您的问题给您答案。第 3 方 DLL 可能在 C 或 C++ 中具有依赖关系,或者它甚至可能不适合在 ASP.NET 上工作。引用 DLL 的现代方法是使用 NuGet(如果包可用),它通常会处理有关引用其自身依赖项的脏细节。
标签: c# asp.net .net dll .net-assembly