我想在现有的.NET Core项目中使用Roslyn语法重写器。但是,我不确定如何整合它。为了进行分析,我有一个单独的NuGet包,可以被项目引用;这很好用。但是,我找不到有关如何将语法重写器与现有工作流集成的任何文档。
由于这是一个.NET Core项目,我目前正在使用Visual Studio和dotnet
命令行工具进行编译。该项目是一个csproj引用netcoreapp3.0(预览)。我想集成我的语法重写器,这样每当我运行dotnet build
或在Visual Studio中按F5 / F6时,语法重写器就会运行。虽然有很多用于构建语法重写器的文档,但似乎没有任何用于将其集成到构建过程中的文档。
要清楚,这就是我要做的事情:
例如,假设我有以下代码:
class A
{
[SomeAttribute]
void Method()
{
}
}
我可以轻松地创建一个语法重写器,它以语法树的形式获取此代码,更改它,并生成与以下语法树对应的代码:
class A
{
[SomeAttribute]
[AnotherAttribute]
void Method()
{
SomeCode();
}
}
或者,我可以通过将代码作为字符串输入来生成语法树,以及将最终语法树呈现为字符串。这很容易。
我无法找到的说明是自动执行此过程。我不希望每次构建时都手动运行EXE;我希望能够将它集成到默认的构建过程中,我正在寻找正确的方法来做到这一点。
理想情况下,这还涉及在开发人员编写代码时在Visual Studio中重写语法树。这将允许IntelliSense在最终语法树上运行,而不是开发人员编写的内容。但是,我不知道这部分是否有可能实现。
语法重写器不是构建的一部分。它们通常用于构建在Visual Studio中运行的代码修复程序。