Roslyn 源代码生成器能否发现 IDE 的 spacing/etc 首选项?
Can a Roslyn Source Generator discover the IDE's spacing/etc preferences?
我正在编写 Roslyn 源代码生成器,原则上我想确保生成的源代码(现在可见、可调试等)至少在某种程度上符合用户的选项卡配置vs 空格,大括号位置等。我不打算支持所有内容,但明显的支持:当然。
所以;我正在实施 ISourceGenerator
和 ISyntaxReceiver
,这意味着我可以访问 GeneratorInitializationContext
、GeneratorExecutionContext
和 SyntaxNode
API。但是,我找不到任何方法从这里获取这些 IDE 设置。这可能吗?
这甚至可能是不可能的,因为我正在谈论 IDE 设置并且 并不总是 IDE -例如,用户可以在命令行中只是 运行 dotnet build
。
(或者可能;是否有可能在将生成的代码返回给调用者之前在生成的代码上触发等效的“格式文档”?)
正如谈话中所观察到的,没有好的方法可以做到这一点(或者至少在撰写本文时没有)。生成器 可以 尝试使用 .editorconfig 中的值来了解格式设置(如果您想将其拼凑起来),但此时您必须自己编写其中的一些内容。我的建议是,在我们建立对此的支持之前,不要担心它,并随时将用户投诉指向这个或错误。
无论如何,调试问题都会让事情变得棘手:在 IDE 中打开的文件需要与构建期间生成的文件相匹配,因为调试器希望它们对齐。 .editorconfig 至少意味着双方可以看到相同的值。
我正在编写 Roslyn 源代码生成器,原则上我想确保生成的源代码(现在可见、可调试等)至少在某种程度上符合用户的选项卡配置vs 空格,大括号位置等。我不打算支持所有内容,但明显的支持:当然。
所以;我正在实施 ISourceGenerator
和 ISyntaxReceiver
,这意味着我可以访问 GeneratorInitializationContext
、GeneratorExecutionContext
和 SyntaxNode
API。但是,我找不到任何方法从这里获取这些 IDE 设置。这可能吗?
这甚至可能是不可能的,因为我正在谈论 IDE 设置并且 并不总是 IDE -例如,用户可以在命令行中只是 运行 dotnet build
。
(或者可能;是否有可能在将生成的代码返回给调用者之前在生成的代码上触发等效的“格式文档”?)
正如谈话中所观察到的,没有好的方法可以做到这一点(或者至少在撰写本文时没有)。生成器 可以 尝试使用 .editorconfig 中的值来了解格式设置(如果您想将其拼凑起来),但此时您必须自己编写其中的一些内容。我的建议是,在我们建立对此的支持之前,不要担心它,并随时将用户投诉指向这个或错误。
无论如何,调试问题都会让事情变得棘手:在 IDE 中打开的文件需要与构建期间生成的文件相匹配,因为调试器希望它们对齐。 .editorconfig 至少意味着双方可以看到相同的值。