如何不引用程序集的特定版本?

The*_*ght 4 c# versioning oracle build visual-studio

我有一个Visual Studio 2010项目,我引用了一个指向本地版本的程序集Oracle.DataAccess.dll.

我已经明确地将选项"Specific Version"设置为false但是在构建应用程序时我已经检查了应用程序程序集并且它具有对

Oracle.DataAccess,Version = 2.112.3.0,Culture = neutral,PublicKeyToken = 89b483f429c47342

如何引用特定版本的程序集?

我想依赖bin文件夹中可用的版本.

它目前显然取决于应用程序的构建位置.如果我在安装了不同版本的Oracle客户端的计算机上构建项目,则主应用程序中将包含不同的Oracle.DataAccess版本控制引用.

它不应该依赖于应用程序的构建位置.它不应该引用任何特定版本.

Mik*_*ray 6

特定版本是一个编译时检查,您实际构建的版本是您在项目/文件引用中实际拥有的版本.

您编译的哪个版本作为引用的程序集进入已编译的程序集元数据.这包括程序集版本号,因为它是程序集与CLR的标识的一部分.如果输出程序集中没有包含版本,则无法引用另一个程序集.

对于您的场景,我可能会将Specific Version设置为true,因此如果我在安装了不同版本的计算机上构建它,则编译将失败.然后,如果我想针对新版本进行编译,我会更新项目文件.

如果您希望针对引用程序集的可能更新版本运行,则可以通过策略进行适当控制.Oracle提供的发布者策略文件,或者您通过app config程序集绑定重定向确定应用程序与较新版本完全兼容的文件.本文档提供了通过配置文件进行重定向的示例.