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

时间:2017-01-29 01:58:23

标签: visual-studio code-generation roslyn visual-studio-extensions

我有一个Visual Studio扩展,可以生成一些代码。在生成用户时,如何尊重用户的格式设置(如Tab vs Spaces,this.限定符等)?

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

如果是这样,我如何阅读标签与空格和this.前缀设置,尊重.EditorConfig文件?

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

1 个答案:

答案 0 :(得分:1)

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