在12c中查看有关ODP.NET的新Managed dll的注释/信息...看来在ClickOnce部署中使用它与“
”一样“简单而美观”1)引用托管dll而不是非托管 2)设置CopyLocal = true 3)确保应用程序不依赖于预先安装的Oracle客户端中的内容,例如的tnsnames.ora
这是对的吗? (阿卡:今年圣诞老人来得好吗?)
答案 0 :(得分:1)
我们已经能够使用CopyLocal功能将托管的odp.net dll包含在我们的应用程序中。当这个应用程序安装在只安装了Win 7和NO Oracle软件的机器上时,它能够连接到服务器上的Oracle数据库并正常运行。
opd.net dll是托管的,MSIL,不需要在已安装的计算机上的GAC中。
答案 1 :(得分:0)
这取决于程序集是否可以在本地运行,或者需要在GAC中安装。如果您可以将它包含在部署中并且它可以工作,那么您应该将它添加到项目中。
如果代码中引用了程序集,请将构建操作设置为“none”,将“copy to output directory”设置为false。然后,当您添加引用时,将其指向项目中包含的程序集,并将“copy local”设置为true。
如果代码中未引用程序集,请将构建操作设置为“始终复制”,将类型设置为“内容”。
答案 2 :(得分:0)
YES !!!!通过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位版本,32位版本的Oracle.ManagedDataAcesssDTC.dll位于相同的\托管目录中。
这就是在我的ClickOnce应用程序中成功部署Oracle客户端所需的全部内容。 App.config中没有添加任何内容,只是更改了连接字符串,并确保上面的两个.dll设置为CopyLocal = true。
下载是来自Oracle的“ODP.NET,托管驱动程序”:http://www.oracle.com/technetwork/database/windows/downloads/utilsoft-087491.html