.NET框架版本(或者是什么运行什么?)

5

好的,这是一个比较广泛的问题,但是...是否有一张表可以说明框架的哪个版本可以运行什么?

所以,我想它可以分为两个问题:

1- 框架是否100%向后兼容?我曾经让Framework 2.0网站运行1.1 dlls,所以我认为2.0将运行1.1。对于Windows应用程序,这样做是否可行?对于所有版本都适用吗?

2- 框架是否向前兼容?我知道上述的反向操作不起作用,但它是否适用于任何版本集?

那么,将您客户端机器上的版本与构建版本同步保持多重要呢?

在.NET社区中,有没有最佳实践方法可以使您的软件适用于最多数量的客户端,而不会强制非技术用户下载更新/不同版本的.NET框架?


我认为框架之间的变化太多了,无法适应单一图表。你可以谷歌搜索“.NET breaking changes”,找到相当不错的文档,介绍版本之间发生了哪些变化,但它们从未在一个中心位置。 - Joseph Yaduvanshi
我对运行1.1 DLL的2.0网站非常好奇...它是否没有依赖于其他DLL,包括System?我相当确定这是不可能的... - Matt DeKrey
回到过去 - 当我们更新网站到2.0框架时,我们没有重新编译绝大多数的dll。唯一需要重新编译的是其中有重大更改的那些dll。(现在我有点模糊地知道ASP.Net框架和.Net框架版本之间的区别,因此我对差异不太清楚,所以下一个评论可能在技术上有误)当我们将网站更新到3.5 .Net Framework时,我们也不需要做任何更改。 - saunderl
我刚刚和一位同事交谈。我们目前有一个在1.1中构建的页面,它继承了一个在3.5 dll中的基础对象。不同的框架JIT是否会处理“跨语言通信”? - saunderl
3个回答

4
通常来说,如果.NET版本X与.NET版本Y可以并存,那么.NET版本X与.NET版本Y是不兼容的(向前或向后)。这是我使用已久的一条规则(自从.NET 2.0推出以来)。对于小型应用程序来说,这可能过于保守,但最好谨慎行事。
以下是一些具体例子:
- .NET 4.0无法正确运行.NET 3.x或更早版本的应用程序。 - .NET 3.5可以运行.NET 3.0和.NET 2.0应用程序,但无法运行.NET 1.1。 - .NET 3.0可以运行.NET 2.0应用程序,但无法运行.NET 1.1。 - .NET 2.0无法运行.NET 1.1。 - .NET 4.0可以与.NET 3.5/3.0/2.0以及.NET 1.1共存。 - .NET 3.5、3.0和2.0之间不能共存。 - .NET 3.5/3.0/2.0可以与.NET 1.1共存。
希望这能帮到您。

1

在我看来,迄今为止的“主要”版本包括:

  • 1.0
  • 1.1
  • 2.0,3.0,3.5(我认为这些是因为 C# 的重大扩展而被拆分出来的)
  • 4.0

不同行的框架可以并存,互不干扰;在同一行的框架可以互换使用,只要主机安装的程序集版本至少符合所需求。

所有 .NET 版本现在都随 Windows 一起提供 - 它们现在被视为是操作系统的一部分,并遵循其生命周期。(参见http://support.microsoft.com/lifecycle/search/?alpha=.NET+Framework&sort=PN) 如果您的用户一直保持计算机更新,那么使用最新的 .NET Framework 版本就不会有任何问题。

请确保在1.0之后的配置文件中包含<supportedRuntime>元素:http://msdn.microsoft.com/en-us/library/w4atty68.aspx

正如Jim Schubert在评论中提到的,您的C#代码可能会在较新版本上编译,但是有一些破坏性变化。


3.5 版本中没有 C# 扩展。 - Brian Rasmussen

0

我没有在任何地方看到过图表,但通常情况下,您不必担心向后兼容性。唯一重要的是确保您的客户安装了最低限度的框架。

而且,没有任何一个.NET版本是向前兼容的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接