在 VS 扩展中使用用户格式生成代码
Generate code with user's formatting in VS extension
我有一个 Visual Studio 扩展程序可以生成一些代码。生成时如何尊重用户的格式设置(如制表符与空格、this.
限定符等)?
我知道您可以在 Roslyn 中创建一个语法树,但您仍然需要指定所有 whitespace 中的确切内容。是否有一种全局方式来应用此格式,或者我们是否需要尝试阅读所有单独的设置?
如果是这样,对于 .EditorConfig 文件,我将如何阅读选项卡与 space 和 this.
前缀设置?
目前,我的扩展只是构建一个假定默认设置的字符串,将其写入文件并将其添加到解决方案中。
- 您需要 VisualStudioWorkspace 对象(我假设您已经拥有,否则请查看 Josh Varity 的博客 post here)
- 生成您的文本并使用 AddDocument
将其添加到项目中
- 调用 GetOptionsAsync 获取适用于此文档的选项集(.editorconfig、用户设置等)
- 调用 Formatter.FormatAsync 传递
GetOptionsAsync
给你的选项集
- 通过在解决方案上调用 WithDocumentText 来更新格式化文档。
我有一个 Visual Studio 扩展程序可以生成一些代码。生成时如何尊重用户的格式设置(如制表符与空格、this.
限定符等)?
我知道您可以在 Roslyn 中创建一个语法树,但您仍然需要指定所有 whitespace 中的确切内容。是否有一种全局方式来应用此格式,或者我们是否需要尝试阅读所有单独的设置?
如果是这样,对于 .EditorConfig 文件,我将如何阅读选项卡与 space 和 this.
前缀设置?
目前,我的扩展只是构建一个假定默认设置的字符串,将其写入文件并将其添加到解决方案中。
- 您需要 VisualStudioWorkspace 对象(我假设您已经拥有,否则请查看 Josh Varity 的博客 post here)
- 生成您的文本并使用 AddDocument 将其添加到项目中
- 调用 GetOptionsAsync 获取适用于此文档的选项集(.editorconfig、用户设置等)
- 调用 Formatter.FormatAsync 传递
GetOptionsAsync
给你的选项集
- 通过在解决方案上调用 WithDocumentText 来更新格式化文档。