.NET Framework的向前兼容性从3.5到2.0

时间:2012-11-20 11:09:50

标签: .net .net-3.5 .net-2.0 compatibility forward-compatibility

我正在寻找有关.NET框架特定版本之间前向兼容性的可靠建议。

为了清楚起见,我们假设我们讨论的是仅支持.NET 2.0的SQL Server 2008,并且我们使用存储过程加载v3.5程序集以及所有v3.5依赖项。

这些事实如何结合? 赢得“CLR是否相同”的事实?我们可以这么说,因为CLR版本在三个FW版本之间是相同的,所以v3.5代码可以安全地引入到v2.0环境中,前提是它还引入了所有依赖项吗?在这种情况下,我们可以忽略“不支持的前向兼容性”通知在一般情况下是正确的,但在v3.5-v2.0关系的特定情况下却不正确吗?

(我们已经尝试将带有所有依赖项的v3.5程序集导入SQL Server 2008.它可以工作。但我想知道它是否有效,因为它应该,或者因为一个脆弱的魔法。)

3 个答案:

答案 0 :(得分:4)

没有“.NET 3.5程序集”这样的东西。印在程序集上的唯一版本是它需要的运行时版本。对于由.NET版本2.0到3.5 SP1附带的编译器构建的任何程序集,这是v2.0.50727。进一步扭曲,这确实指定了程序集中元数据的格式。只有CLR版本2或更高版本才能读取程序集中的清单。这种格式在4.0中发生了变化,这是您需要CLR版本4来执行以4为目标的程序集的核心原因。

框架版本2.0到3.5 SP1之间的唯一区别在于包含的程序集集。当您定位3.0或更高版本时,您只能将程序集引用添加到WPF PresentationFramework程序集。您只能在定位3.5时添加System.Core。

在SQL项目中避免这些新程序集并不困难。如果你弄错了,你会得到一个快速的例外。

答案 1 :(得分:1)

我认为你的第一个假设“SQL Server 2008只支持.NET 2”是错误的,所以下面的讨论都没有意义。

如果你看看这篇文章,可以看到支持.NET 3.5,因为System.Core只是.NET 3.5,

http://msdn.microsoft.com/en-us/library/ms403279(v=sql.100).aspx

现在您可以放心使用.NET 3.5程序集。

答案 2 :(得分:0)

SQL Server加载2.0 CLR,它与3.x兼容。所以,是的," CLR版本是相同的"胜。