【问题标题】:Assembly Compatibility Question装配兼容性问题
【发布时间】:2010-02-28 00:44:45
【问题描述】:

我有一个使用 .NET 3.5 编写的基本服务器控件。如果我将该 dll 提供给正在运行 .NET 2.0 应用程序的人,它会起作用吗?

【问题讨论】:

    标签: c# .net backwards-compatibility


    【解决方案1】:

    除非您引用 .NET 3.0 或 3.5 中包含的任何 DLL,否则它应该可以工作,因为 CLR 版本在 .NET 2.0、3.0 和 3.5 中是相同的。我相信 2.0 程序集(“红色位”)可能有微小的变化,但我必须仔细检查。

    您甚至可以将 Visual Studio 中的项目属性更改为以 .NET 2.0 为目标。如果您的应用无法编译,那么它无论如何都不会在 .NET 2.0 上运行。

    Scott Hanselman 发布了关于 .NET 2.0-3.5 differences 的帖子。

    【讨论】:

    • 项目属性中的“Target Framework”设置对兼容性有影响吗?
    • 是的,将此设置为 2.0,Visual Studio 将阻止您使用 2.0 框架中不存在的功能。
    • 是的,你是对的:在 3.x 中确实对 2.0 的“红色位”进行了微小的更改。请注意,当您设置目标框架时,Visual Studio 不会检测到这些:它只会阻止您使用 3.x 程序集,而不是 2.0 程序集中的 3.x 方法。我认为有一个代码分析规则可以捕捉到这些;还安装 2.0 服务包将红色位更新到 3.x 级别。
    • @itowlson,我目前找不到任何东西,但红色位更改不是应用于 .NET 2.0 服务包吗?老实说,我不记得了。
    • 乔希:是的,他们是。因此,如果 MJ 的客户拥有 2.0 的完整 SPed 副本,他会没事的(无论如何,从“无法追踪的红色位更改”的角度来看 *grin*)。
    【解决方案2】:

    您应该做的第一件事是尝试将 Target Framework 更改为 2.0 并查看您的 Server Control 项目是否仍然可以编译(右键单击项目,选择 Properties,然后将 Target Framework 更改为“.NET Framework 2.0”并选择“目标框架更改”对话框中的“是”)。如果它仍然可以编译,那么你就有了一个不错的开始。现在编译它,将它添加到一个新网站并检查它是否有效。

    大多数时候您可能会发现您的控件不会使用任何 3.5 特定功能,因此一旦您尝试针对 3.5 编译它,您就可以开始使用了!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-28
      • 2014-02-12
      • 2011-10-04
      • 2013-03-28
      • 2019-10-03
      • 2018-06-02
      • 2012-03-28
      相关资源
      最近更新 更多