在2011的下半年,Visual Studio 11就已經呼之欲出,在2012年的2月29日,微軟官方網站正式發佈了VS11的測試版。
VS11中使用了Framework4.5,與Framework4.0相比,沒有發生太大的改變,只是對功能進行了優化。
下載地址:http://www.microsoft.com/visualstudio/11/zh-cn/downloads
單單一個安裝包就需要1.7G左右,安裝旗艦版大約需要3.6G的空間,安裝時間可能比較長,需要耐心地等待喔。
一、支持觸屏管理與Metro
VS11明顯是面向Windows 8開發的,與Windows 8相同,它支持觸屏管理與Metro 風格的應用開發,並支持本地或者遠程調試。
二、ASP.NET
在ASP.NET方面,在數據綁定上增加了新ItemType屬性來定義綁定類型, 以SelectMethod來綁定獲取數據源的方法。
在顯示類型屬性的時候,只需要使用<%#:Item.Id%>即可代替原來的<%#Eval("Id")%>,使用起來會更加簡單。
2 <ItemTemplate>
3 ID <%#:Item.ID%>
4 Age <%#:Item.Age%>
5 Name <%#:Item.Name%>
6 </ItemTemplate>
7 </asp:Repeater>
綁定數據源
1 public IList<Person> GetPersonList()2 {
3 var personList = new List<Person>();
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 controls="controls">2 <source src="mylove.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 方法可以把對象轉換爲JSON
1 obj.ID = "1";2 obj.Name = "Leslie";
3 obj.Age="29";
4 alert(JSON.stringify(obj));
五、異步操作
在異步操作方面,VS11也作出了一點調整,比如在異步獲取上,它在原基礎上增加一個await操作。
功能與PLINQ相似,系統能自動判斷操作是否能提高系統的性能,如果通過判定,將在在後臺線程中運行,不會影響主線程的運作。
2 {
3 var response = await new HttpClient().GetAsync("http://msdn.microsoft.com");
4 string result = response.EnsureSuccessStatusCode().Content.ReadAsString();
5
6 this.textBox1.Text = result;
7 .......
8 }
若要使用異步頁面,注意把頁面的異步屬性設置爲true
1 <%@ Page Title="" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true"2 CodeBehind="ProductDetails.aspx.cs" Inherits="WebFormsLab.ProductDetails"
3 Async="true" %>
4
5 <asp:Label ID="threadsMessageLabel" runat="server" />
同樣地與原本的異步頁面比較一下,只需要在異步調用時加上 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 {
15 await wc.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 }));
22 }
23 }
六、代碼測試
VS11新增了一個重複代碼分析功能,使代碼的修改更加簡單快節。
它還有一個調試工具,叫做 “Page Inspector”,專門爲ASP.NET開發而設,能加強調試的功能。
還有帶有一個 Metro 風格模擬器,允許開發者模擬測試 Metro 應用的觸摸和旋轉事件。
結束語
據說在WF與F#上,VS11也進行了不少的優化,這需要更多時間進行更深入的瞭解。
相信VS11能更有效地幫助代碼的編寫,減少開發時間。
Visual Studio 11視頻介紹:http://v.youku.com/v_show/id_XMzU2NzU3NzU2.html
對.NET開發有興趣的朋友請加入博客園討論小組“.NET高級編程” 一起探討!
作者:風塵浪子
http://www.cnblogs.com/leslies2/archive/2012/03/01/2375462.html