VS 2010 和 .NET 4.0 系列之《多定向支持》篇

作者: scottgu  來源: 博客堂  發布時間: 2010-01-21 16:04  閱讀: 2025 次  推薦: 0   原文鏈接   [收藏]  

系列文章導航:

VS 2010 和 .NET 4.0 系列之《ASP.NET 4 中的SEO改進 》篇

VS 2010 和 .NET 4.0 系列之《干凈的Web.Config文件 》篇

VS 2010 和 .NET 4.0 系列之《起始項目模板》篇

VS 2010 和 .NET 4.0 系列之《多定向支持》篇

VS 2010 和 .NET 4.0 系列之《多顯示器支持》篇

VS 2010 和 .NET 4.0 系列之《代碼優化的Web開發Profile》篇

VS 2010 和 .NET 4.0 系列之《ASP.NET, HTML, JavaScript 代碼片段支持》篇

VS 2010 和 .NET 4.0 系列之《自動啟動ASP.NET應用》篇

VS 2010 和 .NET 4.0 系列之《在ASP.NET 4 Web Forms中實現URL導向》篇

VS 2010 和 .NET 4.0 系列之《在VS 2010中查詢和導航代碼》篇

VS 2010 和 .NET 4.0 系列之《VS 2010代碼智能提示的改進》篇

VS 2010 和 .NET 4.0 系列之《添加引用對話框的改進》篇

VS 2010 和 .NET 4.0 系列之《內置圖表控件》篇

 

  這是我針對即將發布的VS 2010 和 .NET 4所撰寫的 貼子系列的第三篇。

  今天的貼子討論VS 2010中增強了的多定向(multi-targeting)支持,該支持允許你使用和定向.NET的多個版本。我們在VS 2010版本中做了重大的架構級工作,實現了若干個新的多定向特性,提供了更佳的體驗。

  理解并列(Side-by-Side)的含義

  VS 2010可以和Visual Studio的早期版本并列(side by side)安裝。這意味著,你可以在安裝了VS 2008/VS 2005/VS 2003的同個機器上安裝VS 2010,如果你想要的話,可以同時使用所有這些版本。

  .NET 4.0也可以和.NET的早期版本并列(side by side)安裝在同個機器上。.NET 4.0給了框架類庫和CLR引擎新的版本號碼,這意味著,它可以完全獨立于.NET 2.0, 3.0 和 3.5運行。這意味著,你可以在安裝了.NET 2.0/3.0/3.5的機器上安裝 .NET 4.0, 配置某些應用使用.NET 4.0來運行,其他應用使用老一點的.NET版本來運行(IIS管理器工具允許你配置一個ASP.NET應用所使用的.NET版本)。這允許你將.NET 4.0用于新的應用,而沒有必要測試和升級所有現有的應用。

  VS 2008的多定向支持

  VS 2008是第一個包含.NET多定向支持的Visual Studio版本,這意味著,你不光可以使用VS 2008創建和編輯.NET 3.5 項目,也可以創建和編輯.NET 3.0 和 .NET 2.0項目。這允許開發人員更快地升級和充分利用新的Visual Studio工具特性,而不必要求在運行他們應用的客戶機和生產性服務器端安裝新一點的.NET 版本。

  VS 2008的多定向支持利用了.NET 2.0, .NET 3.0, 和 .NET 3.5都是在同個版本的CLR之上運行的這個事實,而這三個.NET 版本的主要區別在于它們的框架類庫。結果是,Visual Studio的編譯器能夠生成同樣的IL輸出,調試器能夠針對同個CLR引擎進行調試,IDE對多定向的支持主要著重于過濾掉不支持某個給定.NET 版本的新的程序集和項目模板的的顯示。

  這個多定向體驗是可行的,盡管不完美。VS 2008中的Intellisense總是顯示.NET 3.5版本的框架類庫的類型和成員(即使你定向的是.NET 2.0)。這意味著,你有時候會在無意中使用一個ASP.NET 3.5才有的方法,盡管你是在開發一個ASP.NET 2.0 項目。

  VS 2010的多定向支持

  我們在VS 2010中做了一些非常重大的架構級改動,來促成更好和更精確的多定向支持。

  VS 2010現在給每一個.NET版本都配置了我們稱之為“引用程序集(reference assemblies)”的東西。“引用程序集”只包含某個特定框架程序集的元數據,而不是它的實現(因此所占硬盤極小)。但這個元數據足夠確保VS 2010總是能夠在定向某個.NET 框架版本時提供百分之百精確的intellisense。這還意味著,通過設計器中屬性表格呈示的屬性,對象瀏覽器中的API列表,以及IDE中所有其它各種地方都能精確地顯示出確切版本的API簽名。

  我們還更新了VS 2010調試器,profiler和編譯器,使之能夠定向多個CLR版本。

  使用VS 2010的多定向支持

  為更好地理解這些新的多定向特性的工作原理,讓我們用VS 2010來創建一個新的ASP.NET Web應用。我們先用 “文件->新項目”菜單命令調出“新項目”對話框,使用對話框頂部的版本下拉框過濾項目模板,使之只顯示.NET 2.0所支持的模板,然后創建一個新的ASP.NET 2.0 web應用項目:

 

  因為這個項目定向的是.NET 2.0,VS 2010 會自動對工具箱和標識intellisense進行過濾,只允許我們使用那些隨ASP.NET 2.0發布的控件。不象VS 2008,VS 2010中的屬性表格現在自動過濾,只顯示那些ASP.NET 2.0按鈕控件所支持的屬性:

 

step2

  在編寫代碼時,VS 2010現在也只顯示.NET 2.0所支持的那些類型和方法/屬性/事件的代碼intellisense。在下面,在鍵入“Response.Re”時,你可以看到ASP.NET 2.0 “Response”對象的intellisense:

  在使用內置的VS web服務器運行應用時,它會使用 ASP.NET 2.0版本來運行(VS 2010調試器調試的是CLR 2.0進程):

  將項目從.NET 2.0 移植到.NET 4.0

  或者,我們也可以在解決方案管理器中右擊項目,調出它的屬性對話框,來將項目重新定向,使之在.NET后期版本下工作。我們可以選擇對話框上的“定向框架(target framework)”下拉框,選擇我們想要定向的.NET框架版本:

  我們可以從上面的各種不同的.NET版本中任選一個。該列表中包括了一個"Server Core(服務器核心)” profile,支持無界面的Windows Server 2008 R2版本,它不支持某些APIs。因為我們用于元數據和intellisense的引用程序集能夠支持任意一個版本,如果它們引進任何新的API的話,我們甚至能夠在將來的服務包中發布它們的版本,以促成百分之百的精確性。

  在這個示范中,我們將選擇把項目移植到.NET 4.0,完畢后,VS 2010將自動地更新項目的引用程序集,以及項目的web.config文件來適當反映出所用的新版本。

  做完這一步后,VS 2010 會過濾工具箱和標識intellisense,顯示ASP.NET 4.0版本中所有新的控件和屬性。 例如,下面的屬性表格現在顯示了新的“ClientIDMode”屬性,該屬性是ASP.NET 4.0中所有控件都有的,它能讓你控制客戶端ID是如何輸出的,以避免丑陋的客戶端id(這是ASP.NET 4.0中的一個新特性,我會在以后的博客中討論):

  至此,我們將項目升級到使用.NET 4.0,VS 2010現在也會顯示.NET 4.0中的新的類型和類型中的方法/屬性/事件的代碼intellisense。例如,在下面,你可以看到 ASP.NET 4.0 “Response” 對象上的一些新的redirect方法(是在前面項目定向.NET 2.0時沒有出現的):

  上面新的Response.RedirectPermanent()方法方便了發出“HTTP 301 Moved”回復,該回復可以避免你的網站在搜索引擎中積存失效的鏈接。URL導向引擎現在也同時為基于ASP.NET Web Forms 和 ASP.NET MVC的應用所支持,新的Response.RedirectToRoute()方法允許你輕松地重新定向到在其中聲明的路徑。

  最后,在我們使用內置的VS web服務器運行應用時,VS 2010現在會使用ASP.NET 4.0版本來運行這個應用:

  結束語

  VS 2010的多定向支持允許你開發定向 .NET 4.0, .NET 3.5, .NET 3.0 和 .NET 2.0的項目。它允許你開始利用新的工具特性,而不必馬上將運行你應用的客戶機和服務器升級到.NET 4.0。這改進了的多定向支持將確保其體驗比以前更好,更精確。

  希望本文對你有所幫助,

  Scott

0
0
 
標簽:VS 2010 .NET 4.0
 
 

文章列表

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()