如何在解决方案上运行案例更正?

时间:2016-04-15 13:58:11

标签: .net vb.net roslyn

我有一个基于roslyn的小应用程序,用于基于sample provided at codeplex的VB.NET / C#项目的代码格式化。此应用程序是我基于DTE开发的旧版代码格式化程序的新版本,其中我以编程方式在特定解决方案中的每个文件上运行Visual Studio命令Edit.FormatDocument,如下所示:

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

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

  • public变为Public
  • 变量定义为fooBar但用作foobar =>使用情况更改为fooBar

首先,我认为仅Microsoft.CodeAnalysis.Formatting.Formatter.FormatAsync(...)就可以完成这项任务,但似乎只关注空白。因此,我开始寻找其他地方并发现方法Microsoft.CodeAnalysis.CaseCorrection.CaseCorrector.CaseCorrectAsync(...)但遗憾的是CaseCorrectorinternal。这让我很奇怪,考虑到方法CaseCorrectAsyncpublic是不是一个错误。

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

1 个答案:

答案 0 :(得分:0)

正确的解决方案实际上是根据roslyn bug report中的评论使用CaseCorrectorpublic。所以要解决这个问题,现在必须公开CaseCorrector,在本地构建roslyn并使用修改后的二进制文件。

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