【问题标题】:Use .dll in server instead of in deployed application在服务器而不是部署的应用程序中使用 .dll
【发布时间】:2014-02-28 10:44:19
【问题描述】:
我的应用程序需要一个 Oracle .dll,我将它与其他应用程序一起部署到应用程序的 bin 文件夹中,它工作正常。
但我想做的是避免部署库,所以我需要服务器知道在哪里寻找它。我将.dll 添加到C:\Oracle\bin 中,该路径包含在Path 系统变量中。但如果程序集不在应用程序的bin 文件夹中,则无法找到该程序集。
有什么提示吗?
【问题讨论】:
标签:
c#
dll
windows-server
【解决方案1】:
这几乎可以正常工作。您发现了 2 个可行的部署选项。 1) 将其捆绑在您的应用程序 bin 目录中或 2) 正确安装 oracle 网络协议并使用安装 API。
我能想到的实际上只有 2 个选项。 1) 与必要的网络库进行静态链接——我不记得曾经在 Windows 上看到过这些,我知道我已经在 Unix 上使用过静态链接到 OCI 库,不过这是很久以前的事了。 2) 在中间层托管 Oracle 连接,并让您部署的应用程序始终调用中间层(而不是直接调用 Oracle)
顺便说一句,您可能不想使用 OCI 库,与现代方法相比,这些代码很难看。
【解决方案2】:
如果您进入要添加的 dll 的引用属性,您可以将 Copy Local 属性更改为 False。
这将允许程序从您找到 dll 的原始位置提取 dll。
您唯一需要注意的是,您的 dll 在您的开发 PC 上与它在您的服务器上的位置相同,如果不是,您的程序将找不到您的 dll。例如,如果您服务器上的 dll 位于 C:\Oracle\bin 中,则它必须位于开发 PC 上的 C:\Oracle\bin 中。