如何 运行 对解决方案进行大小写更正?

How to run case correction on solution?

我有一个基于 roslyn 的小型应用程序,用于 VB.NET/C# 个基于 sample provided at codeplex. This application is a new version of older code formatter that I developed based on DTE 的项目的代码格式化,我在其中以编程方式 运行 Visual Studio 命令 Edit.FormatDocument 在特定解决方案中的每个文件上,如下所示:

projectItem.Document.DTE.ExecuteCommand("Edit.FormatDocument");

这不再是可接受的,因此我开始开发新版本来执行与 FormatDocument 命令相同的任务。 VB.NET 源文件中此命令的功能之一是它可以更正关键字和名称的大小写,例如:

首先我认为 Microsoft.CodeAnalysis.Formatting.Formatter.FormatAsync(...) 一个人就可以完成这项工作,但它似乎只处理空格。因此我开始寻找其他地方并发现了方法 Microsoft.CodeAnalysis.CaseCorrection.CaseCorrector.CaseCorrectAsync(...) 但不幸的是 CaseCorrector class 是 internal。不过,这让我想知道,考虑到方法 CaseCorrectAsyncpublic.

是否不是错误

在我新的基于 roslyn 的应用程序中是否有合理的方法来 运行 大小写更正?

正确的解决方案确实是使用 CaseCorrector class,根据 roslyn bug report 中的评论,它本来是 public。因此,现在要解决此问题,必须制作 CaseCorrector public,在本地构建 roslyn 并使用修改后的二进制文件。

如果需要,应该可以利用 BuildNuGets.csx script 来创建包含本地更改的 roslyn nuget 包。