我已经开始使用Visual Studio 2008,它一直要求我每次打开时将我的2.0网站项目升级到3.5 .
当我在Visual Studio中将网站项目从2.0升级到3.5时,会发生什么?
它是否更新了我的web.config?它究竟是如何改变我的项目/网站/代码的?
升级到3.5后,是否有可能将任何2.0方法/设置用于BREAK?
有没有陷阱?
Matt Ryan.. 10
(正如其他地方提到的其他答案,加上一些额外内容:)
将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代码库中具有名为"operator"的符号的人的改进:-)
显然,一旦你切换,你将需要在你部署的任何服务器上使用.NET 3.5.与.NET 1.1 vs .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的Service Pack.因此,任何重大变化都将影响.NET 2.0网站,而无需任何明确的升级步骤.
斯科特Hanselman的发布CLR版本和.NET运行库版本之间的差异的一个很好的解释在这里一会儿回来.
最后一条评论 - 您应该知道,当使用VS 2008来定位.NET 2.0时,您实际上正在针对更新的.NET 2.0进行编译.因此,如果您使用静默添加到.NET 2.0的更新版本中的一种(极少数,很少使用)方法,例如GCSettings.LatencyMode,当您部署到具有原始.NET 2.0 RTM的计算机时,它将无法运行.在这里更详细地阅读它,Scott还在这里发布了一个完整的API更改列表)
虽然实际上遇到这样的问题是不太可能的,在某些方面(甚至排除新3.5功能的好处)你最好在3.5 :-)
(正如其他地方提到的其他答案,加上一些额外内容:)
将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代码库中具有名为"operator"的符号的人的改进:-)
显然,一旦你切换,你将需要在你部署的任何服务器上使用.NET 3.5.与.NET 1.1 vs .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的Service Pack.因此,任何重大变化都将影响.NET 2.0网站,而无需任何明确的升级步骤.
斯科特Hanselman的发布CLR版本和.NET运行库版本之间的差异的一个很好的解释在这里一会儿回来.
最后一条评论 - 您应该知道,当使用VS 2008来定位.NET 2.0时,您实际上正在针对更新的.NET 2.0进行编译.因此,如果您使用静默添加到.NET 2.0的更新版本中的一种(极少数,很少使用)方法,例如GCSettings.LatencyMode,当您部署到具有原始.NET 2.0 RTM的计算机时,它将无法运行.在这里更详细地阅读它,Scott还在这里发布了一个完整的API更改列表)
虽然实际上遇到这样的问题是不太可能的,在某些方面(甚至排除新3.5功能的好处)你最好在3.5 :-)