【问题标题】:Forward compatibility of .NET Frameworks from 3.5 to 2.0.NET Frameworks 从 3.5 到 2.0 的向前兼容性
【发布时间】:2012-11-08 10:41:37
【问题描述】:

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

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

这些事实如何结合?
“CLR 相同”的事实能否获胜?是否可以说,由于三个 FW 版本之间的 CLR 版本相同,只要还引入了所有依赖项,就可以安全地将 v3.5 代码引入 v2.0 环境?在哪种情况下,我们可以将“不支持前向兼容性”通知视为在一般情况下正确,但在 v3.5-v2.0 关系的特定情况下不正确?

(我们实际上已经尝试将具有所有依赖项的 v3.5 程序集导入 SQL Server 2008。它有效。但我想知道它是因为它应该有效,还是因为脆弱的魔法。) em>

【问题讨论】:

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


    【解决方案1】:

    没有“.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 项目中避免使用这些新程序集并不困难。如果你弄错了,你会得到一个快速的异常。

    【讨论】:

      【解决方案2】:

      我认为您第一个假设“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 程序集了。

      【讨论】:

        【解决方案3】:

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

        【讨论】:

        • 我认为你的评论充满了歧义。这里的兼容是什么意思?你是怎么跳到“是”的?我不会投反对票,但希望你能说清楚。
        猜你喜欢
        • 1970-01-01
        • 2011-04-07
        • 2010-09-19
        • 2011-02-18
        • 2010-11-30
        • 2016-09-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多