ClickOnce和ODP.NET 12c管理的DLL

时间:2013-08-26 21:19:40

标签: clickonce odp.net

在12c中查看有关ODP.NET的新Managed dll的注释/信息...看来在ClickOnce部署中使用它与“

”一样“简单而美观”

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

这是对的吗? (阿卡:今年圣诞老人来得好吗?)

3 个答案:

答案 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

how