2009-01-08 114 views
7

我们是一家开发商店,仍然使用.net 2.0开发我们的大部分开发工具。我们开始考虑在3.5(LINQ等)中使用一些新的东西,并且还有一些其他软件包,我们正在寻找那些需要WPF等等。.net 2.0和3.5将并排运行吗?

我们希望在我们的测试服务器上运行3.5并运行,但不会破坏我们已经运行的2.0站点(并且我们希望它们继续运行在2.0以下)。是否有任何隐藏的问题我应该知道,或者我可以在我们的Server 2003机器上安装3.5并且可以继续使用?

(具体关注的是,尽管微软声称.NET 2.0的组件都在3.5一样的,他们实际上改变了一些破坏游戏。)

更新:通过这里大家的意见和其他阅读的鼓舞上,我们决定咬紧牙关,在服务器上安装3.5“只是为了看看会发生什么。”

在运行安装程序时,我们发现(对我们来说,这是一个不小的惊喜).net 3.5已在8月份安装完毕 - 我们都不知道它。

这其实的确如同您要求的无缝升级一样。

谢谢大家!

回答

2

3.5是2.0的扩展。没有2.0没有3.5。它实际上是一个不同的DLL(Core.dll)。这不像从1.1到2.0;如果您的旧网站不参考新的DLL,那么这些网站不会被改变。

+0

Core.dll不是一个不同的dll,它只是另一个DLL,与mscorlib程序和系统一起它被加载到应用程序域中。 – casperOne 2009-01-08 00:34:55

+0

我的意思是原始的2.0 DLL(mscorlib)没有被修改。 – 2009-01-08 00:38:36

+0

啊哈,很高兴知道。谢谢。 – 2009-01-08 00:39:15

12

2.0会很好地与3.5。 .NET 3.5实际上只是在2.0上添加了一些额外的类,所以一切都是兼容的。我将一些项目从2.0移到3.5,并且所有的移植都非常顺利,只需重新编译即可。

+0

这也适用于网络应用程序? – 2009-01-08 00:39:48

+0

这个答案是错误的。 3.5替换某些2.0的部分,所以你需要回归测试 – 2009-01-08 00:43:20

1

只是补充一点,.NET版本是为了协同工作,而不仅仅是2.0/3.0/3.5版本。你也可以在一边运行1.1,它会很好。

-2

不,你不能。它很可能会起作用,但3.5会替换某些2.0部分,因此您需要进行回归测试。

如果您不喜欢答案,请不要投票。

我在TechEd上特别提出了这个问题。保持相同的API并不意味着实现的行为相同。当时,发言者的回应是:性能改进(没有细节)。

重复自己,因为它似乎没有注册:API是相同的,实现是不同的(正如你可以在评论中的Hanselman链接看到的)。弥迦,你似乎不知道你在说什么。

7

.net 3.5本质上是一组与2.0库并行运行的附加程序集。任何现有的2.0库都没有发生任何重大更改。您可以直接将所有2.0应用程序转换为3.5,而不会遇到任何问题。这包括在3.5框架上运行2.0应用程序。一些优化和错误修复已达到2.0,但所有公共接口保持不变。这适用于包括System.Web在内的所有名称空间。

在3.0和3.5版本的框架中添加了许多新功能,如WPF,实体框架和其他几个“框架”。类被添加到现有的命名空间,但它们实际上生活在单独的dll中。需要注意的

有一件事是FryGuy指出:

要小心安装3.5 SP1, 因为它也将安装2.0 SP2, 它增加了一些额外的功能。这 将是很好,除了视觉 工作室将使用智能感知和 一切都会编译罚款和工作 大开发机器上,但 完全失败了电脑上一个不起眼的错误 与“公正” 2.0。

例如,方法 ManualResetEvent.WaitOne。 SP1增加了 的重载WaitOne(int),而 没有它,你需要调用 WaitOne(int,false)。

由于CMS4GuysFromRolla发布:

Additive versions of the .NET Frameworks http://aspnet.4guysfromrolla.com/images/NewIn35.gif

1

我已经在过去几年做这两个非常大的系统,不得不在两种情况下绝对没有任何问题。 3.5运行在2.0运行时之上。

3.0应该是2.1,3.5应该是2.5。如果这有助于任何。 3.0和3.5实际上只是2.0的功能扩展,并且不包含它们自己的运行时。 Service Pack发布到2.0是发现更改为2.0的地方。

3

是的,但有一个警告。

安装3.5 SP1时要小心,因为它还安装了2.0 SP2,它增加了一些额外的功能。这很好,除了Visual Studio会使用IntelliSense,并且所有的东西都可以在开发者机器上很好地编译和工作,但是在“just”2.0的计算机上会出现一个模糊的错误。

一个例子是ManualResetEvent.WaitOne方法。 SP1增加了重载WaitOne(int),而没有它,你需要调用WaitOne(int,false)。

1

除了提供的所有答案之外,由于您必须关注自己的工作,因此在部署到生产服务器之前,应先在测试服务器中尝试它。

根据我的经验,我们在Web服务器上升级到.NET 3.5时没有问题。