編譯程式會在驗證該程式碼的語法和語意時,建置應用程式程式代碼的詳細模型。 他們會使用此模型從原始程式碼建置可執行文件輸出。 .NET 編譯程式平臺 SDK 提供此模型的存取權。 我們日益依賴集成開發環境(IDE)功能,例如 IntelliSense、重構、智慧重新命名、「尋找所有參考」和「移至定義」,以提高我們的生產力。 我們依賴程式代碼分析工具來改善程式碼品質,以及程式代碼產生器來協助應用程式建構。 隨著這些工具變得更聰明,他們需要存取只有編譯程式在處理應用程式程式代碼時所建立的更多模型。 這是 Roslyn API 的核心任務:打開那些封閉的盒子,使工具和終端使用者能夠共享編譯器擁有的有關我們程式碼的豐富資訊。 透過 Roslyn,編譯器不再是單純不透明的原始碼到物件碼的轉換工具,而是成為平台:可以在您的工具和應用程式中用於程式碼相關任務的 API。
.NET 編譯程序平臺 SDK 概念
.NET 編譯程式平臺 SDK 大幅降低建立程式碼焦點工具和應用程式的進入障礙。 它為在中繼程式設計、程式代碼產生和轉換、C# 和 Visual Basic 語言的互動式使用,以及以領域特定語言內嵌 C# 和 Visual Basic 等領域建立許多創新機會。
.NET 編譯程式平臺 SDK 可讓您建置 分析器和 程式 代碼修正 ,以找出並更正程式代碼錯誤。 分析器 瞭解語法(程序代碼結構)和語意,以偵測應更正的做法。 程式代碼修正 提供一或多個建議的修正程式,以解決分析器或編譯程式診斷所發現的程式代碼錯誤。 一般而言,分析器和相關聯的程式代碼修正會封裝在單一專案中。
分析器和程式代碼修正會使用靜態分析來瞭解程序代碼。 它們不會執行程式碼或提供其他測試優點。 不過,他們可以指出通常會導致錯誤、無法維護的程式代碼或標準指導方針違規的做法。
除了分析器和程式代碼修正之外,.NET 編譯程式平臺 SDK 也可讓您建置程式 代碼重構。 它也提供一組 API,可讓您檢查及瞭解 C# 或 Visual Basic 程式代碼基底。 因為您可以使用這個單一程式代碼基底,因此您可以利用 .NET 編譯程式平臺 SDK 所提供的語法和語意分析 API,更輕鬆地撰寫分析器和程式代碼修正。 從完成編譯器分析的繁重工作中解放後,您可以專注於更具針對性的任務,即尋找並修正專案或程式庫中的常見程式碼錯誤。
一個較小的好處是,當您使用Visual Studio時,分析器和程式代碼修正較小且佔用更少的記憶體,相比於必須撰寫自己的基礎程式代碼以理解專案中的程式代碼。 藉由利用編譯程式和 Visual Studio 所使用的相同類別,您可以建立自己的靜態分析工具。 這表示您的小組可以使用分析器和程式代碼修正,而不會影響IDE的效能。
撰寫分析器和程式代碼修正有三個主要案例:
強制執行團隊編碼規範
許多團隊都有程式碼標準,這些標準是透過與其他團隊成員一起進行的程式碼檢閱來強制執行的。 分析器和程式代碼修正可讓此程式更有效率。 當開發人員與小組中的其他人共用其工作時,就會進行程式代碼檢閱。 開發人員在收到任何反饋之前,將投入所有時間完成新功能。 當開發人員強化不符合團隊運作方式的習慣時,可能會過去好幾週。
分析器會在開發人員撰寫程式代碼時執行。 開發人員會立即取得意見反應,鼓勵立即遵循指引。 開發人員一開始進行原型設計時就培養撰寫符合規範程式碼的習慣。 當功能準備好供人類檢閱時,已強制執行所有標準指引。
團隊可以建置分析器和程式代碼修正,以尋找違反團隊編碼慣例的常見行為。 這些可以安裝在每個開發人員的計算機上,以強制執行標準。
小提示
在建置您自己的分析器之前,請先查看內建分析器。 如需詳細資訊,請參閱 程式代碼樣式規則。
提供程式庫套件的指導
NuGet 上的 .NET 開發人員有豐富的連結庫可供使用。 其中一些來自Microsoft,一些來自第三方公司,另一些來自社區成員和志願者。 當開發人員可以成功使用這些連結庫時,這些連結庫會獲得更多採用和更高的檢閱。
除了提供文件之外,您還可以提供分析器和程式碼修正,來尋找並更正程式庫中的常見錯誤用法。 這些立即更正可協助開發人員更快成功。
您可以在 NuGet 上的程式庫中封裝分析器和程式碼修正。 在該案例中,安裝 NuGet 套件的每個開發人員也會安裝分析器套件。 所有使用您程式庫的開發人員會立即從您的團隊獲得指導,並即時收到關於錯誤和修正建議的反饋。
提供一般指引
.NET 開發人員社群已透過經驗探索出運作良好模式,以及最佳避免的模式。 數個社群成員已建立分析器,以強制執行這些建議模式。 隨著我們進一步瞭解,新想法總是有發揮的空間。
這些分析器可以上傳至 Visual Studio Marketplace ,並由開發人員使用 Visual Studio 下載。 語言和平臺的新人可快速學習已接受的做法,並在其 .NET 旅程中早日變得富有成效。 隨著這些方法的廣泛使用,社群會採用這些做法。
來源產生器
來源產生器的目標是啟用 編譯時間中繼程序設計,也就是可在編譯時期建立並新增至編譯的程序代碼。 來源產生器可以在執行之前讀取編譯的內容,以及存取 任何其他檔案。 這項功能可讓他們對使用者 C# 程式代碼和產生器特定檔案進行反省。 您可以瞭解如何使用 來源產生器手冊來建置累加來源產生器。
後續步驟
.NET 編譯程式平臺 SDK 包含程式代碼產生、分析和重構的最新語言物件模型。 本節提供 .NET 編譯程序平臺 SDK 的概念性概觀。 如需進一步的詳細數據,請參閱快速入門、範例和教學課程小節。
您可以在下列五個主題中深入瞭解 .NET 編譯程式平臺 SDK 中的概念:
若要開始使用,您必須安裝 .NET 編譯程式平臺 SDK:
安裝指示 - Visual Studio 安裝程式
在 Visual Studio 安裝程式中尋找 .NET 編譯程序平臺 SDK 有兩種不同的方式:
使用 Visual Studio 安裝程式進行安裝 - 工作負載檢視
.NET 編譯程式平臺 SDK 不會自動選取為 Visual Studio 延伸模塊開發工作負載的一部分。 您必須將其選取為選擇性元件。
- 執行 Visual Studio 安裝程式
- 選取 [修改]
- 檢查 Visual Studio 延伸模組開發 工作負載。
- 在摘要樹狀結構中開啟 Visual Studio延伸模組開發 節點。
- 勾選 .NET 編譯器平台 SDK 的方塊。 您會在可選元件的最下面找到它。
您可以選擇性地讓 DGML 編輯器 在視覺化檢視中顯示圖形:
- 開啟摘要樹狀目錄中的 [個別元件 ] 節點。
- 勾選 DGML 編輯器 方塊
使用 Visual Studio 安裝程式,在「個別元件」索引標籤中進行安裝
- 執行 Visual Studio 安裝程式
- 選取 [修改]
- 選擇 [個別元件] 索引標籤
- 勾選 .NET 編譯器平台 SDK 的方塊。 您會在 [ 編譯程式]、[建置工具和運行時間] 區 段下方的頂端找到它。
您可以選擇性地讓 DGML 編輯器 在視覺化檢視中顯示圖形:
- 勾選 DGML 編輯器 的方框。 您會在 [ 程序代碼工具 ] 區段底下找到它。