【问题标题】:ASP.NET Framework effects of moving from 2.0 to 3.5?ASP.NET Framework 从 2.0 迁移到 3.5 的影响?
【发布时间】:2010-09-12 01:17:33
【问题描述】:

我已经开始使用 Visual Studio 2008,它每次都要求我将我的 2.0 网站项目升级到 3.5。

  • 当我在 Visual Studio 中将网站项目从 2.0“升级”到 3.5 时,实际上会发生什么?
  • 它会更新我的 web.config 吗?它究竟如何改变我的项目/网站/代码?
  • 升级到 3.5 后是否有可能使任何 2.0 方法/设置中断?
  • 是否存在任何问题?

【问题讨论】:

    标签: .net asp.net visual-studio visual-studio-2008 .net-3.5


    【解决方案1】:

    它会更新您的 web.config 以使用一些较新的 dll。我还没有经历任何重大变化。

    【讨论】:

      【解决方案2】:

      据我了解,.NET 3.5 是带有一些附加库的 .NET 2.0,用于 LINQ 等新功能。因此,您应该能够无缝升级。

      【讨论】:

        【解决方案3】:

        升级到 3.5 后,任何 2.0 方法/设置是否有可能 BREAK?

        总是有损坏的可能,但我建议您备份所有内容并尽早尝试。如果你一直拖延,当你有多个版本的框架 API 更改要弥补时,你会发现它会更加痛苦。

        【讨论】:

          【解决方案4】:

          如果您升级项目类型,它只会更新 .csproj/.vbproj 文件以使用新版本。您可以在项目设置中设置目标代码库,以保留旧框架版本的功能。

          【讨论】:

            【解决方案5】:

            如果您在升级向导中选择不将代码定位到 3.5,则您的应用程序不会发生任何变化。主要区别在于它将“可视化研究”您的解决方案和项目文件,以便它们可能无法被较旧的 IDE 打开。

            【讨论】:

              【解决方案6】:

              所有更改都将在 web.config 文件中。它随着 .NET 3.5 程序集、AJAX 处理程序和 IIS7 配置设置的新设置而增长巨大。但是互联网上有大量文档描述了这些差异。

              【讨论】:

                【解决方案7】:

                我已经以这种方式升级了几个项目,并且没有发生重大变化。作为一个实验,我在我的团队其他成员在 VS2005 上使用的一个项目上执行了此操作,并且也没有遇到任何问题,尽管我确保不签入我的解决方案文件(无论如何我们都将其保留在本地作为政策问题)。

                结果对所有人都是透明的,另外还可以针对不同的 .Net 版本。

                【讨论】:

                  【解决方案8】:

                  (正如其他答案中在其他地方提到的,还有一些额外内容:)

                  • 将 VS 2005 解决方案转换为 VS 2008 意味着您需要维护重复项,或者其他人也必须使用 Visual Studio 2008(而项目文件格式(根据您的问题,您没有使用无论如何)在2005年和2008年之间理论上没有变化,解决方案文件不兼容......)

                  • 将网站转换为 3.5 主要影响 web.config。一些引用被添加到一些默认的 3.5 程序集,例如 System.Core.dll。并且它会添加 IIS 7 部分(如果网站发布到 IIS6 框,这些部分都会被忽略)。

                  • 通常不会从升级中看到新的编译时错误(如果有,也不会出现很多错误)。 C# 和 VB 团队都努力确保所有新 LINQ 关键字的向后兼容性......所以你可以在一个名为“from”的类中的一个名为“where”的方法中拥有一个名为“var”的本地名称,并且一切都可以编译很好...(对于升级到 2005 时在 VB 2003 代码库中具有名为“运算符”的符号的任何人的改进 :-)

                  • 显然,一旦切换,您将需要在部署到的任何服务器上安装 .NET 3.5。与 .NET 1.1 与 .NET 2.0 不同的是,无需担心 CLR 版本/AppPool 问题,它们都在 .NET 2.0 中运行。请阅读下文...

                  如果您担心任何现有 .NET 2.0 代码的运行时回归,有好消息也有坏消息。

                  好消息:回归几乎是闻所未闻的。

                  坏消息(或其他好消息):如果您在运行 2.0 站点的服务器上安装了 .NET 3.5,那么您已经测试了回归 :)

                  如上所述,.NET 3.5 实际上只是 .NET 2.0 CLR,带有一些额外的程序集和新的编译器功能。

                  当您安装 .NET 3.5 时,它还会安装 .NET 2.0 和 3.0 的服务包。因此,任何重大更改都会影响 .NET 2.0 网站,无需任何明确的升级步骤。

                  Scott Hanselman 不久前对 CLR 版本和 .NET 运行时版本 here 之间的区别进行了很好的解释。

                  最后一条评论 - 您应该知道,当使用 VS 2008 以 .NET 2.0 为目标时,您实际上是针对更新的 .NET 2.0 进行编译的。因此,如果您在部署到具有原始.NET 2.0 RTM,它将无法运行。 阅读更多详细信息here,Scott 还发布了API changes here 的完整列表)

                  虽然实际上不太可能遇到这样的问题,但在某些方面(甚至不包括 3.5 新功能的好处),你最好还是使用 3.5 :-)

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 1970-01-01
                    • 2018-10-05
                    • 1970-01-01
                    • 2019-11-12
                    • 1970-01-01
                    • 2014-06-06
                    • 1970-01-01
                    • 2010-09-23
                    相关资源
                    最近更新 更多