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