2

查看有关 12c 中 ODP.NET 的新托管 dll 的评论/信息......似乎在 ClickOnce 部署中使用它就像“简单而美观”一样

1) 引用托管 dll 而不是非托管 2) 设置 CopyLocal=true 3) 确保应用程序不依赖于将成为预安装 Oracle 客户端一部分的内容,例如 tnsnames.ora

这个对吗?(又名:今年圣诞老人来得早吗?)

4

3 回答 3

1

我们已经能够使用 CopyLocal 功能将托管 odp.net dll 包含在我们的应用程序中。当这个应用程序安装在一台只安装了 Win 7 并且根本没有安装 Oracle 软件的机器上时,它能够连接到服务器上的 Oracle 数据库并正常运行。

opd.net dll 是托管的,MSIL 并且不需要位于已安装机器上的 GAC 中。

于 2013-09-09T16:40:04.860 回答
0

这取决于该程序集是否可以在本地运行,或者需要安装在 GAC 中。如果您可以将它包含在部署中并且它可以工作,那么您应该将它添加到项目中。

如果代码中引用了程序集,请将构建操作设置为“无”并将“复制到输出目录”设置为 false。然后,当您添加引用时,将其指向项目中包含的程序集,并将“复制本地”设置为 true。

如果代码中未引用程序集,请将构建操作设置为“始终复制”并将类型设置为“内容”。

于 2013-09-06T22:04:11.633 回答
0

是的!!!!使用 Oracle.ManagedDataAccess,我们能够通过 ClickOnce 部署整个 oracle 客户端,因此您不需要单独安装客户端。这就是我与常规非托管 ODP.NET 的不同之处:

1)。将所有连接信息直接放在连接字符串中,而不是引用 TNSNames.ora。例如。

  string sEZconnect = string.Format("Data Source={0}:{1}/{2};User ID={3};Password={4};"
                                                          , databaseServerName //the server the database resides on
                                                          , "1521"             //TNSlistener port (1521 is default)
                                                          , instanceName       // the name of the database instance on the server
                                                          , userName
                                                          , password);
        OracleConnection _connection = new OracleConnection(sEZconnect);

2)。除了引用Oracle.ManagedDataAccess,我还需要引用Oracle.ManagedDataAcesssDTC,只能通过浏览添加。我在下面展示了 64 位版本,Oracle.ManagedDataAcesssDTC.dll 的 32 位版本在同一个 \managed 目录中。

这就是在我的 ClickOnce 应用程序中成功部署 Oracle 客户端所需的全部内容。App.config 中没有添加任何内容,只是更改了连接字符串并确保将上面的两个 .dll 设置为 CopyLocal=true。

下载的是 Oracle 的“ODP.NET,托管驱动程序”,网址为:http://www.oracle.com/technetwork/database/windows/downloads/utilsoft-087491.html

在此处输入图像描述

于 2016-08-11T21:29:57.343 回答