当提供.net 2.0和.net 4.0二进制文件时,使用后者的优势是什么?



我知道。net 2.0版本是为了兼容性而提供的。但是为什么有些库同时拥有两个版本呢?有什么理由发布一个。net 4.0版本的库吗?

Oracle.DataAccess库为例

通常,针对新版本框架的库版本提供了需要新版本框架才能正常工作的新特性。. net 4.0中引入了许多. net 2.0中没有的新功能。

开发人员喜欢使用最新的框架,所以所有新代码都将针对该框架实现。针对旧版本框架的旧版本仅出于兼容性原因而提供,因为它可能只提供了最小必要的功能子集。

另一种可能性是新框架为库代码提供了性能或其他改进。这些可以[有时]反向移植到框架的早期版本,但它们通常是非优化的实现,因此应该仅在绝对必要时使用。

以Oracle为例。DataAccess图书馆。

这是一个混合模式的程序集的好例子。用c++/CLI编写,包含带有托管类包装器的本机代码。数据库提供程序经常需要使用本地api与数据库服务器通信。

在以。net 4.0为目标的程序中使用。net 2.0版本的这些程序集是一个问题。它们需要一个。exe文件。使用useLegacyV2RuntimeActivationPolicy属性来说服CLR,在CLR的4.0版本上执行这样的程序集是可以的,即使它要求2.0版本。没有该属性会导致严重的启动错误。文档在这里。

太痛苦了。简单的解决方案就是提供这样一个程序集的单独的。net 4.0版本。

最新更新