求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Modeler   Code  
会员   
 
  
 
 
 
vs2005--vs2008--vs2010(.net4.0)
 

2010-07-26 作者:lislok 来源:lislok的blog

 

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 { getset; }

    
public double Price { getset; }

    
public string Author { getset; }
}

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



使用decj简化Web前端开发
Web开发框架形成之旅
更有效率的使用Visual Studio
MVP+WCF+三层结构搭建框架
ASP.NET运行机制浅析【图解】
编写更好的C#代码
10个Visual Studio开发调试技巧
更多...   


.NET框架与分布式应用架构设计
.NET & WPF & WCF应用开发
UML&.Net架构设计
COM组件开发
.Net应用开发
InstallShield


日照港 .NET Framework & WCF应用开发
神华信息 .NET单元测试
北京 .Net应用软件系统架构
台达电子 .NET程序设计与开发
赛门铁克 C#与.NET架构设计
广东核电 .Net应用系统架构
更多...