近段时间忙于其他的事物,无暇旁顾.NET,以至于大半个月前就装好的VS2008也一直没机会试用.昨天,发现一个以前的项目需要修正个bug,正好借这个机会小试了下VS2008.
我下的版本是VS2008 Team suit rtm版,用TS主要是因为有单元测试,如果不考虑这个,用pro版也一样的.
不大记得2005的TS版有多大了,我机子上只有个2005 pro版,是2.69G,这次下的VS2008 TS有3.82G之大(都包含了MSDN),要换了以前的破电脑,20G的硬盘,下完后再安装下,大半硬盘空间就没了.....
同2003迁移到2005一样,VS2005的项目要迁移到2008一样非常的简单,双击2005的solution或project文件,就会出现升级 的提示框,按提示一路点下去就好了,我注意到里面有段话说到,"升级后的项目有可能无法在更早版本的VS中打开",其实我压根就没指望升成2008后还能 在2005下使用(以前用VC6升级成VC7后,是不能用再返回去用VS6打开的),按MS的意思,应该还是可能的了?以后可以试下:)
大部分的2005的项目都可以像上面说的那样,简单的迁移完成,编译后就可以用了.在安装2008之后,虽然.NET Framework升级到了3.5,但是在IIS里,ASP.NET版本选项卡中,依然只有1.1和2.0的选项,我试验了下,只要选择2.0的环境就可 以正常的运行.NET 3.5版本的WEB程序.这是个好消息,说明如果你的程序里不包含3.5特性的话,编译后依然可以直接放在以前服务器上运行,而不需要升级服务器的. NET版本(刚刚查了下,目前.NET所有的名字空间的runtime都在2.0或更低的版本框架下).
除此之外,VS2008的项目属性中多了一项TargetFramework,你可以选择2.0,3.0和3.5三个版本,如果是2.0或3.0,那么会 有部分的.NET名字空间无法引用,具体表现是在引用->.NET的列表中为灰色不可选择.由2005升级到2008的项目,默认的 TargetFramework为2.0版本
我在迁移项目的过程中也不是一帆风顺,在solution下,有个项目使用了MS ASP.NET AJAX 1.0和相应的ajaxControlToolkit,编译时直接报错.
这是因为在VS2008中集成了ASP.NET AJAX1.0,而且版本号和路径都变化了,所以需要删除以前的引用,重新引用.
AJAX用到的空间是System.Web.Extensions和System.Web.Extensions.Design,重新引用后,编译可以通过了,但是一运行又是一堆错误.要改的东西还不少.
首先是web.config文件,在assemblies,configsections等节点下的Extensions相关的type全部需要修改,最 简单的方法是新建个VS2008的WEBSITE项目,往页面随便扔个ajax的控件,像ScriptManager之类的,然后再去查看它的 web.config文件,对照来改吧.
改完后再运行还是会报错,这个时候是因为我使用了ajaxControlToolkit的原因,他的版本是.NET 2.0,问题不是出在这,而是出在它引用的AJAX包的文件,与上面的项目一样,版本是错误的.因此,把ajaxControlToolkit的 solution打开,重新对System.Web.Extensions和System.Web.Extensions.Design引用,然后再 rebuild.再运行自己的项目,一切都OK了.
这次我只是小小的试用了下VS2008,虽然一般的项目迁移不会有什么问题,但只要牵涉到第三方组件的时候,问题就会变的复杂,不过只要自己能够认真的一步步找问题,这都不是问题了:)