Roslyn语法重写器是如何集成的?

问题描述 投票:1回答:1

我想在现有的.NET Core项目中使用Roslyn语法重写器。但是,我不确定如何整合它。为了进行分析,我有一个单独的NuGet包,可以被项目引用;这很好用。但是,我找不到有关如何将语法重写器与现有工作流集成的任何文档。

由于这是一个.NET Core项目,我目前正在使用Visual Studio和dotnet命令行工具进行编译。该项目是一个csproj引用netcoreapp3.0(预览)。我想集成我的语法重写器,这样每当我运行dotnet build或在Visual Studio中按F5 / F6时,语法重写器就会运行。虽然有很多用于构建语法重写器的文档,但似乎没有任何用于将其集成到构建过程中的文档。

要清楚,这就是我要做的事情:

  1. 我最终会有一个基于this documentation的语法重写器。它在编译时转换代码。
  2. 我有一个C#项目,包含我想要转换的代码。
  3. 我想从步骤#1获取语法重写器,并在从步骤#2编译项目时自动运行它。

例如,假设我有以下代码:

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

我可以轻松地创建一个语法重写器,它以语法树的形式获取此代码,更改它,并生成与以下语法树对应的代码:

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

或者,我可以通过将代码作为字符串输入来生成语法树,以及将最终语法树呈现为字符串。这很容易。

我无法找到的说明是自动执行此过程。我不希望每次构建时都手动运行EXE;我希望能够将它集成到默认的构建过程中,我正在寻找正确的方法来做到这一点。

理想情况下,这还涉及在开发人员编写代码时在Visual Studio中重写语法树。这将允许IntelliSense在最终语法树上运行,而不是开发人员编写的内容。但是,我不知道这部分是否有可能实现。

c# .net roslyn
1个回答
1
投票

语法重写器不是构建的一部分。它们通常用于构建在Visual Studio中运行的代码修复程序。

© www.soinside.com 2019 - 2024. All rights reserved.