【问题标题】:Will .net 2.0 and 3.5 run side by side?.net 2.0 和 3.5 会并排运行吗?
【发布时间】:2009-01-08 00:30:29
【问题描述】:

我们是一家开发商店,我们的大部分开发工作仍在 .net 2.0 中进行。我们开始考虑使用 3.5 中的一些新东西(LINQ 等),并且我们正在研究其他一些需要 WPF 等的软件包。

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

(具体的担忧是尽管微软声称 .net 2.0 组件在 3.5 中是相同的,但它们实际上改变了一些打破游戏规则的东西。)

更新:在每个人的 cmets 和其他阅读的支持下,我们决定硬着头皮在服务器上安装 3.5,“只是为了看看会发生什么。”

在运行安装程序时,我们发现(令我们惊讶的是).net 3.5 早在 8 月就已安装 - 我们都不知道。

这确实是您可以要求的无缝升级。

谢谢大家!

【问题讨论】:

    标签: .net configuration


    【解决方案1】:

    2.0 将与 3.5 配合得很好。 .NET 3.5 实际上只是在 2.0 之上添加了一些额外的类,所以一切都是兼容的。我将一堆项目从 2.0 迁移到 3.5,一切都迁移得非常顺利,只需要重新编译。

    【讨论】:

    • 这也适用于网络应用?
    • 那个答案是错误的。 3.5替换了2.0的某些部分,所以需要回归测试
    【解决方案2】:

    .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, 这增加了一些额外的功能。这 会很好,除了视觉 studio 将使用 IntelliSense 和 一切都会很好地编译并工作 在开发者机器上很棒,但是 完全失败并出现一个模糊的错误 在带有“just” 2.0 的计算机上。

    方法就是一个例子 ManualResetEvent.WaitOne。添加了 SP1 重载 WaitOne(int),而 没有它,你需要打电话 WaitOne(int, false)。

    正如CMS 发自4GuysFromRolla


    (来源:4guysfromrolla.com

    【讨论】:

      【解决方案3】:

      是的,但有一个警告。

      安装 3.5 SP1 时要小心,因为它还安装了 2.0 SP2,它增加了一些额外的功能。这很好,除了 Visual Studio 将使用 IntelliSense 并且一切都可以正常编译并在开发人员机器上运行良好,但在“仅”2.0 的计算机上完全失败并出现一个模糊的错误。

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

        • Core.dll 不是一个不同的 dll,它只是另一个 dll,连同加载到应用程序域的 mscorlib 和 System。
        • 我的意思是原来的2.0 dll(mscorlib)没有被修改。
        【解决方案5】:

        补充一点,.NET 版本旨在协同工作,而不仅仅是 2.0/3.0/3.5 的东西。你也可以边跑1.1就好了。

        【讨论】:

          【解决方案6】:

          在过去的几年里,我在两个非常大的系统上完成了这项工作,并且在任何一种情况下都绝对没有问题。 3.5 在 2.0 运行时之上运行。

          3.0 应该是 2.1,3.5 应该是 2.5。如果这有帮助的话。 3.0 和 3.5 实际上只是对 2.0 的功能扩展,不包括它们自己的运行时。 2.0 的 Service Pack 版本是对 2.0 进行更改的地方。

          【讨论】:

            【解决方案7】:

            除了提供的所有答案,而且由于您的工作受到威胁,您应该先在测试服务器中尝试,然后再部署到生产服务器中。

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

            【讨论】:

            • 好点。我们确实使用了测试服务器 - 但我们是一家小商店,只有一个,所以即使将它安装在那里也会导致办公室周围有些紧张。尽管如此,一切都很好,结局很好......
            【解决方案8】:

            正如大家所说,你不会有任何问题:


            (来源:4guysfromrolla.com

            :-)

            【讨论】:

            • 你知道营销和现实生活的区别吗?
            【解决方案9】:

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

            [edit]如果您不喜欢这个答案,请不要投反对票。

            我在 TechEd 专门问过这个问题。保持相同的 API 并不意味着实现的行为相同。当时,演讲者的反应是:性能改进(没有细节)。

            重复一遍,因为它似乎没有注册:API 相同,实现不同(如您在 cmets 中的 Hanselman 链接中所见)。 Micah,你似乎不知道你在说什么。

            【讨论】:

            • 你能举一个被替换而不是修改的例子吗?
            • Well 3.5 包括 .net 2.0 SP1 和 2,我假设它替换了 2.0 框架的各个部分。当然最好不要改变,但你永远不知道......
            • 一些 BCL 已针对 linq 进行了修改,但应该不会影响您:hanselman.com/blog/…
            猜你喜欢
            • 2010-11-19
            • 2010-11-02
            • 2011-10-07
            • 1970-01-01
            • 2010-12-10
            • 2010-11-01
            • 1970-01-01
            • 2010-09-13
            • 2011-03-06
            相关资源
            最近更新 更多