【问题标题】:Generate code with user's formatting in VS extension在 VS 扩展中生成具有用户格式的代码
【发布时间】:2017-06-14 11:43:13
【问题描述】:

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

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

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

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

【问题讨论】:

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


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

【讨论】:

  • 有没有办法用 MSBuildWorkspace 做到这一点?我试过这样做,但返回的文档没有任何 .editorconfig 对象
  • 我们正在努力从命令行编译器添加对此的支持,但尚未实现。这是一个正在进行的工作示例github.com/dotnet/roslyn/blob/master/src/CodeStyle/Core/…
  • 很抱歉,我对 Roslyn 还很陌生,无法理解您的 WIP 链接中显示给我的内容。我有一个简单的命令行工具,可以手动设置格式选项(这里的要点:gist.github.com/aolszowka/7c7f374a5e1adf927d4113b2bec12fc3),但我一生无法弄清楚如何让它支持 .editorconfig 这不可能吗?让它也保存文档会很有用,而不是我拥有的 StreamWriter hack。
猜你喜欢
  • 2022-06-14
  • 2022-06-14
  • 1970-01-01
  • 2022-08-08
  • 1970-01-01
  • 1970-01-01
  • 2011-05-08
  • 2010-09-24
  • 1970-01-01
相关资源
最近更新 更多