我希望让我的程序更具活力.我希望能够使用相同的程序支持Oracle 10g和Oracle 11g数据库.如果我使用.DLL引用为一个版本构建程序,那么另一个版本失败.有没有办法使用已安装在计算机上的Oracle.DataAccess.DLL,而不是在我的安装程序中提供DLL?
提前致谢.
SpecificVersion是仅在构建时应用的属性.它旨在帮助构建环境中有多个版本的程序集; 当SpecificVersion为true时,它将确保您构建并引用所需的版本.但是,构建目标程序集后,其引用包含引用程序集的强名称和版本号.因此,如果SpecificVersion为false,那么它将被设置为引用当时构建环境中可用的引用版本.
"请注意,特定版本属性只是构建时指令,它对引用程序集的运行时版本解析没有影响"(http://www.code-magazine.com/article.aspx?quickid=0507041&page = 3).
但是,您可以使用版本重定向来显式注释您接受任何版本.oldVersion字段指定任何内容(您构建的版本),newVersion属性将指定您希望在运行时实际链接哪一个.
<dependentAssembly>
<assemblyIdentity name="Oracle.DataAccess" publicKeyToken="89B483F429C47342"/>
<bindingRedirect oldVersion="1.0.0.0-2.111.9999.9999" newVersion="2.102.2.20"/>
</dependentAssembly>
Run Code Online (Sandbox Code Playgroud)
(请参阅http://msdn.microsoft.com/en-us/library/7wd6ex19.aspx.)
该dependentAssembly节点可以应用于不同的上下文.一个可能的上下文是web.config或app.config作为配置/运行时/ assemblyBinding节点的子节点.
回答你支持Oracle 10g和11g的特定场景?有两个选项,前者是由用户@BQ建议的:
还有一些提示: