Roslyn 源生成器能否发现 IDE 的间距/等首选项?

Mar*_*ell 6 c# code-generation roslyn

我正在编写 Roslyn 源代码生成器,原则上我想确保生成的源代码(现在可见、可调试等)至少在某种程度上符合用户的制表符与空格、括号位置的配置等。我不打算支持所有内容,但很明显:当然。

所以; 我正在实施ISourceGeneratorand ISyntaxReceiver,这意味着我可以访问GeneratorInitializationContext,GeneratorExecutionContextSyntaxNodeAPI。但是,我找不到从这里获取这些 IDE 设置的任何方法。这可能吗?

这甚至可能是不可能的,因为我在谈论 IDE 设置并且并不总是有 IDE - 例如,用户可能只是dotnet build在命令行上运行。

(或者可能是;在将生成的代码交还给调用者之前,是否可以在生成的代码上触发“格式文档”等价物?)

Jas*_*ski 1

从对话中可以看出,没有好的方法可以做到这一点(或者至少在撰写本文时还没有)。如果您想将其拼凑在一起,生成器可以尝试使用 .editorconfig 中的值来了解格式设置,但此时您必须自己编写一些内容。我的建议是,在我们建立对此的支持之前,不要担心它,并随意将用户投诉指向此或错误。

无论如何,调试问题都会让事情变得棘手:在 IDE 中打开的文件需要与构建期间生成的文件相匹配,因为调试器希望它们能够对齐。.editorconfig 至少意味着双方可以看到相同的值。