繁体   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