發(fā)布15年后,Microsoft終于開始替換Visual Studio中基于COM的C#和Visual Basic項目系統(tǒng)。Microsoft談及很多有必要放棄目前所用系統(tǒng)的原因:
原生且基于COM 單線程并與UI線程綁定 難以通過和(不同用途的)子類型類擴(kuò)展到聚合之外 與Visual Studio緊密綁定新增的C#和Visual Basic項目系統(tǒng)的主要目標(biāo)為:
可托管且基于托管接口 支持多線程,可擴(kuò)展,響應(yīng)性更好 可通過Managed Extensibility Framework(MEF)和不同組合方式輕松擴(kuò)展。包含第三方在內(nèi)的多方可對同一個項目系統(tǒng)做出自己的貢獻(xiàn) 可托管在Visual Studio之外為實現(xiàn)這些特性,新系統(tǒng)的代碼基使用VB和C#共同編寫而來。
“項目系統(tǒng)”是什么?
根據(jù)Roslyn項目系統(tǒng)網(wǎng)站的介紹,
項目系統(tǒng)是指介于磁盤上的項目文件(例如.csproj和.vbproj)以及Visual Studio的各種功能(包括但不限于解決方案瀏覽器、設(shè)計器、調(diào)試器、語言服務(wù)、構(gòu)建和部署)之間的一層組件,對于項目文件中所包含文件執(zhí)行的幾乎所有操作都是通過項目系統(tǒng)實現(xiàn)的。
同時需要注意,項目系統(tǒng)并不是構(gòu)建系統(tǒng)。雖然項目系統(tǒng)需要與構(gòu)建系統(tǒng)(例如MSBuild)進(jìn)行通信,但項目系統(tǒng)的角色處在IDE和項目文件之間。(如果一切順利,也可以位于第三方工具和項目文件之間。)
為何使用Visual Basic?
在如此新的項目系統(tǒng)中使用Visual Basic的原因僅僅在于,Visual Basic是現(xiàn)成的。雖然項目系統(tǒng)原本使用C++編寫的內(nèi)核已經(jīng)改為使用C#重寫,但“Visual Studio 2005的VB團(tuán)隊已在2003/2004年前后使用VB編寫了應(yīng)用程序設(shè)計器、屬性頁面、資源編輯器,以及設(shè)置設(shè)計器”(來源)。直接移植這些代碼即可,完全沒必要從頭開始重寫。
通用項目系統(tǒng)會如何處理?
通用項目系統(tǒng)(Common Project System)依然存在,Roslyn項目系統(tǒng)將在此基礎(chǔ)之上運(yùn)行。
也許你對這個概念還不熟悉,通用項目系統(tǒng)是在去年夏天伴隨項目系統(tǒng)擴(kuò)展預(yù)覽版一起公布的。該系統(tǒng)的目標(biāo)在于讓開發(fā)者能夠更方便地在Visual Studio中創(chuàng)建新的項目類型,從媒體公告中可知,
我們非常高興且激動地宣布,項目系統(tǒng)擴(kuò)展預(yù)覽版已發(fā)布。借助這個系統(tǒng),開發(fā)者可以定義新的項目類型并以此為基礎(chǔ)開發(fā)擴(kuò)展,借此對用戶體驗進(jìn)行定制,或只需要少量代碼即可在幾分鐘內(nèi)增加新的功能。以往需要編寫超過十萬行代碼才能創(chuàng)建或維護(hù)整個項目系統(tǒng)(通常要基于MPFproj創(chuàng)建分支)的日子一去不復(fù)返,現(xiàn)在開發(fā)者可以通過Visual Studio內(nèi)建的通用項目系統(tǒng)(CPS)直接進(jìn)行開發(fā)工作,該系統(tǒng)已在C++、JavaScript,以及ASP.NET 5中廣泛運(yùn)用。你可以通過下面這個視頻短片進(jìn)一步了解這個系統(tǒng)。
另外需要注意的是,MPFproj主分支更新后,每個項目類型都需要將改動合并到自己項目類型對應(yīng)的分支中。可以想象,對于缺乏足夠維護(hù)預(yù)算的人來說,從長期角度來看這算不上一種可行的解決方案。也正是因此,在其他IDE中無法使用種類如此豐富的項目類型。
查看英文原文:Introducing the Roslyn Project System