vs2008
1. 新的网页设计介面
VS 终於可以支援巢状 Master Page 的 WYSIWYG 设计了!我不知道有多少人曾经为了这个原因而减少或避免巢状
Master Page 的使用(我是其中之一)。VS2008 终於支援这个本来就应该有的功能,相信能在某一程度上改变大家的设计习惯。
其次,VS2008提供了 CSS 的即时编辑和套用的功能。用过 DreamWeaver 的人或许了解那是什麼意思。不过实际上我觉得
VS2008对 CSS 的支援感觉起来比 DreamWeaver 强大一点。
此外,VS2008 还提供了和 FrontPage/DreamWeaver 一样的 Split View,也就是可以开一个分割视窗,同时看到设计画面和原始码。我想这个功能在拉画面和设计前端页面时非常有帮助。
2. 支援对 JavaScript 的除错与 Intelisence
随著 Ajax 的风行,客户端程式设计也逐渐受到重视。我还记得多年前在 VS2005 上市前的一场
MVP 线上会议中,我向美国微软的开发经理问到会不会支援 JavaScript 的 Intelisense,答案是不会时,心里有多麼的失望。但晚到总比不到好,我认为这个功能的加入,一定能让所有网站开发者同感高兴。
3. Multi-targeting 功能
第一次看到这个新名词可能会另人有点摸不著头绪,像我还以为是一个 HyperLink 控制项可以一次把网页开到
_blank 和 _top。其实跟那个一点关系都没有,而是让你可以选择新的专案到底是要支援 .Net 2.0
/ 3.0 还是 3.5。不管你选择哪一种,VS2008 会根据你的选择提供对应的 Intelisense、控制项和其它功能。但不管你指定哪一个版本,并不会让
VS2008 的基本功能回到 VS2005。换句话说,上面提到的像 JavaScript 除错等新功能都仍然可用。
4. 内建 Ajax,不需另外安装
5. 加入两个新的资料控制项:ListView 和 DataPager
6. 内含 LINQ
关於 LINQ, ListView 和 DataPager,解释起来比较复杂,你不妨直接去看 Scott
的文章:The asp:ListView control。
事实上以上并不是 VS2008新功能的全部;由於 VS2008附带了 .Net Framework
3.5,所以它实际上还包含有 WCF 还有对於 Windows Form 的支援。在这里我只略为介绍了与
ASP.NET 有关的部份。
代码编辑器
1. using语句的组织,可以排序、删除掉没有使用的using。
2. 智能感应窗口透明化。出现智能感应窗口后,按下Ctl键使窗口透明化,例如下面左边的图,智能感应窗口几乎看不到了。
3. 如上面右边的图,在Solution Explorer中,右键菜单可以选择使用Windows Explorer直接打开对应的Windows文件夹,这个功能也是比较方便的,因为经常需要打开目录结构比较深的文件夹,以前老是把当前项目文件夹做一个快捷方式拉到桌面上,现在省了。据说这是VS2008在Vista上的一个特性,不知道在XP里面是否可以。
JavaScript的智能感应
1. JavaScript的智能感应比较符合W3C标准,例如在智能感应里面,document对象没有all属性,window对象没有event属性。
2. 例如JavaScript中,使用document.getElementById("form1"),随后出现的智能感应是html
form的属性方法;使用document.getElementById("textbox1")随后出现的智能感应是html
textbox的属性和方法。
3. C#中,方法、类可以添加注释说明,在使用的地方,智能感应中能够显示相关注释说明,08中的JavaScript也可以。不过目前的beta版本只支持在独立的.js等文件中定义的函数才支持这种提示,估计是考虑同一个页面中的函数没有必要,而对于第三方的JavaScript库、公共的JavaScript库文件才有意义。如果JQuery等改成VS08支持的这种注释方式,用起来就舒服了。
例如,添加一个JScript.js文件,如下定义一个函数(注释不会像C#一样自动填充出来,需要手写,但书写方式与C#中一样,目前只支持几个主要的注释节点):
function showMessage(msg){
///<summary>显示一条消息</summary>
///<param name="msg">要显示的消息</param>
///<returns>没有返回值</returns>
alert(msg);
}
使用的地方提示如下图:
4. 引入外部JavaScript库的提示。
在aspx文件中,像上面例子使用script标签引用进来就可以。
如果是在自己的JavaScript库中,例如在项目的一个common.js中,需要VS对jQuery、interface函数提供智能感应,只需要在common.js文件开始位置加入下面语句就可以。
/// <reference path="jQuery.js" />
/// <reference path="interface.js" />
Web Designer、CSS Property Manager、JavaScript
Debuging
1. Web设计器支持代码、设计视图分割显示风格,CSS Property Window能比较直接的查看CSS样式。
2. CSS样式选择智能提示加强,键入class="后,能够选择的CSS类用智能感应方式列出来。
3. JavaScript调试加强。VS2005需要先将aspx页面进入调试状态,才能设置JavaScript断点,2008里面可以直接设置好断点后进行调试。另外JavaScript调试时对变量、DOM等运行时的信息查看显示方面,已经基本类似使用C#进行调试的程度。
上面这几个功能,感觉都是仿照Firebug来做的,但还是没有Firebug方便。
Language Features 语言特性
1. Automatic Properties
public class Book
{
public string Name { get; set; }
public double Price { get; set; }
public string Author { get; set; }
}
2. Object Initializer、Collection Initializer、Query
Syntax、LINQ扩展方法/lambda表达式
//Collection Initializers
IList<Book> books = new List<Book>{
//Object Initializers
new Book{Name="Inside SQL Server", Author="Kalen Delaney", Price=78},
new Book{Name="Domain Driven Design", Author="Eric Evans", Price=56},
new Book{Name="Patterns of Enterprise Application Architecture", Author="Martin Fowler", Price=58}
};
//Query Syntax
Book[] myBooks = (from p in books
where p.Price > 57 && p.Price < 100
orderby p.Price
select p).ToArray<Book>();
foreach (Book book in myBooks)
Console.WriteLine(string.Format("{0}\t{1}\t{2}", book.Author, book.Price.ToString(), book.Name));
Console.ReadLine();
运行结果:
上面的Query Syntax语句等价于下面的LINQ扩展方法、lambda表达式:
Book[] myBooks = (books.Where(p => p.Price > 57 && p.Price < 100).OrderBy(p => p.Price)).ToArray<Book>();
先不看将来LINQ to SQL的发展趋势和普及应用状况怎么样,这种函数语言的动态特性,天生就支持很多设计模式,它所具备的灵活性,应该可以用来实现很多精妙的设计。
3. Anonymous Types
例如:
匿名类型在编译时由编译器自动生成一个类名,因此对于Framework而言它与命名类没有任何区别。var的设计目的就是与匿名类型配合使用,同样在编译时刻转换成强类型声明(而不是VB中的那种后帮定),因此编译器必须根据var类型变量的上下文使用环境来判断类型,如果只声明一个var类型的变量而不使用,编译时刻就会报错。
发现一个不恰当的匿名类型使用,会导致Vista蓝屏的现象。
语言特性方面的额外测试
经过测试,Automatic Properties、Object
Initializer、Collection Initializer、Query Syntax、Extension
Method、lambda Expression、LINQ等这些语言特性可以使用VS2008编译器编译(项目的framework指定为2.0、3.5都可以,如果使用到了Query
Syntax、Extension Method、lambda Expression、LINQ,则必须指定为3.5),然后可以在VS2005的项目中正常引用这些dll,使用相关的方法。
Extension Method、 Query Syntax、lambda
Expression等,是framework 2.0之后语言特性上的一些新亮点,这些特性值得研究一下。
-------------------
vs2010
track:
http://www.codeproject.com/KB/cs/concept_ide.aspx
http://msdn.microsoft.com/en-us/vs2008/products/cc948977.aspx
|