2008年08月17日

无聊贴:VS2008 SP1+MVC Framework Preview3印象

作者 非鱼

本来在自己的虚拟机的系统里面装了个Visual studio 2008 Web Express,加上Sql Server 2005 Express,加上微软的MVC框架Preview1,一方面用来试验一下新技术,另一方面用来开发一下小网站,方便的很。最近VS2008 SP1和.Net Framework 3.5 SP1和SQL Server 2008 Express都出来了,于是下载了VS2008 Express的SP1版,(下载的文件只有2M,所有的文件都是后期再下载的),经过了一个晚上的下载,安装,再打开VS2008的时候就报错了,说Html Editor有错误,结果再打开aspx文件的时候就像文本文件一样了。干脆重装吧。

下载了完整版的VS2008 Pro版,完整的VS2008 SP1 ISO,和Sql2008 Express(没有Management studio,不过大部分操作都可以在VS里面操作)。重装了Windows 2003,装完了VS2008和MSDN,结果升级了VS2008 SP1的时候说我C盘的空间不足(其实我的VS是装在D盘的,删了很多东西给C盘留出1G空间仍然不够,没办法,重建虚拟机,再装系统。

折腾半天终于都装完了。装上MVC Preview3,打开原来写的一个小网站,一编译,出现N多错误。

首先是web.config里面有一个引用找不到,system.web.extension,用模板新建了一个MVC项目,发现它里面的这个引用的版本不一样了,以前是3.6,现在变成了3.6。这一行改了以后又有两个引用找不到,网上一搜,原来MVC框架从Preview2开始被拆成了三个dll,这几个引用重新添加了几次都不管用。后来在网上找到结论,需要到MVC安装目录下去引用文件,而且要选中复制到本地。(后来才发现用模板新建的项目就已经把这几个dll都复制到了bin目录,好奇怪的设定。)

后来发现MVC框架变化好大,不再需要给Controller里面的方法指定属性,RanderView也变成了View,而且要Return。改了好久,终于都改完了。结果还是打不开网站。

算了,干脆从头再来吧,新建一个全新的项目,把原来的东西往这边移。发现App_Code目录消失了,而且添加里面也没有。最后网上找到结论,VS2008的Web应用程序项目已经没有App_Code目录了,任何地方的cs文件都会被编译。所有默认的项目框架Controller和Models目录都跑到了根目录下,跟Views目录并列了。(而且又会在bin目录下生成一个项目名.dll文件了,回到了VS2003的感觉。)另外新的aspx文件都带了一个design.cs文件,完全回到了VS2003的状态。

这不是多余吗?

不过升级也不是没有好处,route映射的参数部分可以使用字符串了,不再限于数字id。这样整个URL看上去更加的对搜索引擎友好。

models没有复制过来,而是重新做了一个,结果发现类的名字也不像原来那样智能了。以前的Users表拖进去以后类名会自动变成User,而DataContext里面对表的引用还是Users,这样使用对象的时候是new User(),而取数据的时候是db.Users.Select。结果现在变成两个变量统一,要么都是Users,要么都是User,看上去相当不爽。

其它还有什么,没有发现。因为没有使用更多功能。SQL2008的优势在Express版里也体现不出来。