在 VS 扩展中使用用户格式生成代码

Generate code with user's formatting in VS extension

我有一个 Visual Studio 扩展程序可以生成一些代码。生成时如何尊重用户的格式设置(如制表符与空格、this. 限定符等)?

我知道您可以在 Roslyn 中创建一个语法树,但您仍然需要指定所有 whitespace 中的确切内容。是否有一种全局方式来应用此格式,或者我们是否需要尝试阅读所有单独的设置?

如果是这样,对于 .EditorConfig 文件,我将如何阅读选项卡与 space 和 this. 前缀设置?

目前,我的扩展只是构建一个假定默认设置的字符串,将其写入文件并将其添加到解决方案中。

  1. 您需要 VisualStudioWorkspace 对象(我假设您已经拥有,否则请查看 Josh Varity 的博客 post here
  2. 生成您的文本并使用 AddDocument
  3. 将其添加到项目中
  4. 调用 GetOptionsAsync 获取适用于此文档的选项集(.editorconfig、用户设置等)
  5. 调用 Formatter.FormatAsync 传递 GetOptionsAsync
  6. 给你的选项集
  7. 通过在解决方案上调用 WithDocumentText 来更新格式化文档。