簡體   English   中英

Roslyn 語法重寫器是如何集成的?

[英]How are Roslyn syntax rewriters integrated?

我想在現有的 .NET Core 項目中使用 Roslyn 語法重寫器。 但是,我不確定如何整合它。 為了分析,我有一個單獨的 NuGet 包被項目引用; 這工作得很好。 但是,我找不到有關如何將語法重寫器與現有工作流集成的任何文檔。

由於這是一個 .NET Core 項目,我目前正在使用 Visual Studio 和dotnet命令行工具進行編譯。 該項目是一個引用 netcoreapp3.0(預覽版)的 csproj。 我想集成我的語法重寫器,這樣每當我在 Visual Studio 中運行dotnet build或按 F5/F6 時,語法重寫器都會運行。 雖然有很多用於構建語法重寫器的文檔,但似乎沒有將其集成到構建過程中的文檔。

需要明確的是,這就是我想要做的:

  1. 我最終將有一個基於此文檔的語法重寫器。 它在編譯時轉換代碼。
  2. 我有一個包含要轉換的代碼的 C# 項目。
  3. 我想從步驟 #1 中獲取語法重寫器,並在我從步驟 #2 編譯項目時自動運行它。

例如,假設我有以下代碼:

class A
{
    [SomeAttribute]
    void Method()
    {
    }
}

我可以輕松地制作一個語法重寫器,以語法樹的形式獲取此代碼,對其進行更改,並生成與以下語法樹對應的代碼:

class A
{
    [SomeAttribute]
    [AnotherAttribute]
    void Method()
    {
        SomeCode();
    }
}

或者,我可以通過將代碼作為字符串輸入來生成語法樹,並將最終的語法樹呈現為字符串。 這很容易。

我找不到說明是自動化這個過程。 我不想每次構建時都手動運行 EXE; 我希望能夠將它集成到默認構建過程中,我正在尋找正確的方法來做到這一點。

理想情況下,這還涉及在開發人員編寫代碼時在 Visual Studio 中實時重寫語法樹。 這將允許 IntelliSense 對最終的語法樹進行操作,而不是開發人員編寫的內容。 但是,我不知道這部分是否可以實現。

語法重寫器不是構建的一部分。 它們通常用於構建在 Visual Studio 中運行的代碼修復。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM