1

我编写了一个连接到 Oracle 11g 数据库的 .NET 4 NT 服务,现在我希望进行部署。

目标机器安装了 Oracle 驱动程序,但仅适用于 ODP v2。(我假设;ODP.NET\Bin 中只有一个 2.x 文件夹)

没有升级路径;公司包不包括我正在寻找的内容,我对这些标准版本中应该包含的内容没有发言权。

另一方面,我被允许安装下载的驱动程序...

目标已使用安装的驱动程序运行 3 个应用程序。要求他们继续不受干扰地这样做。

那么,安装了 2 套 Oracle 驱动程序后,如何确保我的新应用程序使用新的驱动程序集同时保持旧集的“主要”?

4

2 回答 2

0

您需要查看并行部署,如 Oracle 技术网络中所述

如果由于某种原因这是不可能的,您将不得不考虑隔离应用程序或其他一些解决方案。

于 2013-10-31T17:19:50.923 回答
0

我假设两个安装程序都将 ODP 程序集放在 GAC 中。如果是这样,您可以强制使用特定版本。

确保在 .csproj 文件中对要使用的 ODP 版本进行完全限定的引用。我不知道您需要的程序集的具体细节,但这里有一个示例,说明参考在 csproj 文件中的外观。确保它是完全合格的(具有名称、版本、文化、公钥、架构)。而那个SpecificVersion 是真的。

<Reference Include="ODP..., Version=4.x.x.x, Culture=neutral, PublicKeyToken=theKey, processorArchitecture=...">
  <HintPath>..\..\..\lib\ODP\ODP.dll</HintPath>
  <SpecificVersion>True</SpecificVersion>
</Reference>

编译后,这将在您的编译代码中引用特定版本。在运行时,程序集加载器将查找您请求的版本。使用Fusion Log Viewer跟踪这是否按预期发生。如果没有,您可以通过各种方式实现程序集绑定重定向。

如果您需要走这条路线,请查看这些链接:

重定向程序集版本

运行时如何定位程序集

于 2013-10-31T17:26:40.203 回答