在2011的下半年,Visual Studio 11就已经呼之欲出,在2012年的2月29日,微软官方网站正式发布了VS11的测试版。VS11中使用了Framework4.5,与Framework4 支持触屏管理与MetroVS11明显是面向Windows 8开发的与Windows 8相同它支持触屏管理与Metro 风格的应用开发并支持本地或者远程调试。二、ASP.NET在ASP.NET方面在数据绑定上增加了新ItemType属性来定义绑定类型 以SelectMethod来绑定获取数据源的方法。在显示类型属性的时候只需要使用%#:Item.Id%即可代替原来的%#Eval(Id)%使用起来会更加简单。1 asp:Repeater IDrepeater1 runatserver SelectMethodGetPersonList ItemTypePerson 2 ItemTemplate 3 ID %#:Item.ID% 4 Age %#:Item.Age% 5 Name %#:Item.Name% 6 /ItemTemplate 7 /asp:Repeater绑定数据源1 public IListPerson GetPersonList() 2 { 3 var personList new ListPerson(); 4 var person1 new Person(); 5 person1.ID 1; 6 person1.Name Leslie; 7 person1.Age 29; 8 personList.Add(person1); 9 return personList; 10 }在编写ASP.NET页面代码的时候开发人员编辑控件件会出现Smart Tasks提示使开发更加简单在页面也能看到属性设置工具非常地方便三、支持HTML 5和CSS 3从 VS10起系统就开始支持 HTML 5 与 CSS 3 , 而在VS11,更是增强了这方面的功能。在视觉方面它支持了开张Expand、闭合功能Collapse使用起来更加方便。CSS有父子关系的设定只要启用这功能CSS就可以有伸缩的效果阅读CSS与阅读代码一样井井有条。如图在菜单选择Tools - Options - Text Editor - CSS - Formatting选择 Indentation 中的 Hierarchical Indentation以往无论是页面开发人员还是程序员都不太喜欢用VS来开发CSS因为使用不太方便。有见及此VS11为CSS代码添加了感知能力无论在普通属性或者是色彩设置方面使用都非常地方便。对audio这些HTML 5中的控件VS 11无不支持1 audio controlscontrols 2 source srcmylove.mp3/ 3 /audio四、Javascript在VS2010中已经增加了对Javascript的支持使用也比较方便但唯一欠缺的就是对JSON的支持。特别是在使用数组型的JSON数据时候往往需要使用第三方插件才会比较方便本人更多的是使用Newtonsoft.Json工具包。在VS11中明显是正视了这个问题它支持了ECMAScript 5而且为JSON提供了更方便的转换方式。使用 parse 方法可以将JSON数组转换为对象集使用alert可以显示数组中Leslie的Age。1 window.onload function () { 2 var obj JSON.parse([{ID:1,Age:23,Name:Rose},{ID:2,Age:29,Name:Leslie}]); 3 alert(obj[1].Age); 4 }反过来使用 stringify 方法可以把对象转换为JSON1 obj.ID 1; 2 obj.Name Leslie; 3 obj.Age29; 4 alert(JSON.stringify(obj));五、异步操作在异步操作方面VS11也作出了一点调整比如在异步获取上它在原基础上增加一个await操作。功能与PLINQ相似系统能自动判断操作是否能提高系统的性能如果通过判定将在在后台线程中运行不会影响主线程的运作。1 try 2 { 3 var response awaitnew HttpClient().GetAsync(http://msdn.microsoft.com); 4 string result response.EnsureSuccessStatusCode().Content.ReadAsString(); 5 6 this.textBox1.Text result; 7 ....... 8 }若要使用异步页面注意把页面的异步属性设置为true1 % Page Title LanguageC# MasterPageFile~/Site.Master AutoEventWireuptrue 2 CodeBehindProductDetails.aspx.cs InheritsWebFormsLab.ProductDetails 3 Asynctrue % 4 5 asp:Label IDthreadsMessageLabel runatserver /同样地与原本的异步页面比较一下只需要在异步调用时加上 await 的执行方式1 private void UpdateProductImage(Product product) 2 { 3 string imageUrl product.ImagePath; 4 5 if (!string.IsNullOrEmpty(imageUrl) !VirtualPathUtility.IsAbsolute(imageUrl)) 6 { 7 product.ImagePath string.Format(/Images/{0}{1}, product.ProductId, Path.GetExtension(imageUrl)); 8 9 RegisterAsyncTask(new PageAsyncTask(async(o,a,ct) 10 { 11 var startThread Thread.CurrentThread.ManagedThreadId; 12 13 using (var wc new WebClient()) 14 { 15awaitwc.DownloadFileTaskAsync(imageUrl, Server.MapPath(product.ImagePath)); 16 } 17 18 var endThread Thread.CurrentThread.ManagedThreadId; 19 20 threadsMessageLabel.Text string.Format(Started on thread: {0}br / Finished on thread: {1}, startThread, endThread); 21 }));