【问题标题】:probing assemblies探测组件
【发布时间】:2010-11-15 18:02:13
【问题描述】:

几年前,我开发了一个 Windows 服务应用程序(VB.NET 框架 1.1),它使用 System.Data.OracleClient 访问 Oracle 数据库。
由于该驱动程序给我带来了很多麻烦,我想参考 oracle dataprovider (Oracle.DataAccess.dll),它工作得更好。
在我的电脑上一切正常。
问题是当我尝试在服务器(Windows 2000)上发布我的应用程序时。
我无法在该服务器上安装新的 oracle 数据提供程序,并且安装了旧的 oracle 9.0(我的应用程序引用了 oracle 9.2)。
我已将整个目录 (C:\oracle\ora92\bin) 从我的电脑复制(未安装)到服务器,但我不知道如何引用 Oracle 数据提供程序。 我知道这不是一种“干净”的做事方式,但我无法安装新软件。
我已经看到,如果我将我的应用程序(和所有文件)复制到 C:\oracle\ora92\bin 文件夹中,一切正常。
我想将该目录指定为我的应用程序的探测目录。 我尝试了在网上找到的不同解决方案,但似乎都没有。

我想在运行时或在我的配置文件中设置一个文件夹,以便我的应用可以使用那里的程序集(以及所有依赖项)。

我可以为框架 2.0 升级我的应用程序。

谢谢

阿尔贝托

【问题讨论】:

    标签: .net oracle assemblies probing


    【解决方案1】:

    反之亦然 - 将 Oracle 程序集放入应用程序的根目录中。甚至更好 - 将程序集放入服务器上的 GAC。用于此的实用程序 (gacutil) 应该可以在服务器上运行。

    也许这可以帮助你:C#: Custom assembly directory

    如果一切都失败了,您可以订阅 AppDomain 的 AssemblyResolve 事件:

    Assembly Resolve

    【讨论】:

    • 感谢您的帮助 Femaref。我可以将 oracle 程序集放在 GAC 或我的应用程序的 bin 文件夹中。问题是,该文件夹中有超过 290 个文件。我以为我可以设置一个变量。就像环境变量 PATH 一样,这样我的应用程序就会知道在哪里引用其他程序集,但显然这是不可能的。
    • 在帖子中添加了一个链接。也许这可以帮助你。
    猜你喜欢
    • 1970-01-01
    • 2013-06-27
    • 2023-03-18
    • 2021-09-15
    • 1970-01-01
    • 2010-12-02
    • 1970-01-01
    • 2017-02-02
    • 2011-01-21
    相关资源
    最近更新 更多