.net 如何在解决方案上运行案例更正?
我有一个基于roslyn的小应用程序,用于基于。此应用程序是我开发的旧代码格式化程序的新版本,在此基础上,我以编程方式对特定解决方案中的每个文件运行Visual Studio命令.net 如何在解决方案上运行案例更正?,.net,vb.net,roslyn,.net,Vb.net,Roslyn,我有一个基于roslyn的小应用程序,用于基于。此应用程序是我开发的旧代码格式化程序的新版本,在此基础上,我以编程方式对特定解决方案中的每个文件运行Visual Studio命令Edit.FormatDocument,如下所示: projectItem.Document.DTE.ExecuteCommand("Edit.FormatDocument"); 这不再是可以接受的,因此我开始开发新版本,它将执行与FormatDocument命令相同的任务。VB.NET源文件中此命令的一个功能是,它更
Edit.FormatDocument
,如下所示:
projectItem.Document.DTE.ExecuteCommand("Edit.FormatDocument");
这不再是可以接受的,因此我开始开发新版本,它将执行与FormatDocument命令相同的任务。VB.NET源文件中此命令的一个功能是,它更正关键字和名称的大小写,例如:
变为public
public
- 变量定义为
,但用作fooBar
=>用法更改为fooBar
fooBar
- 等等
Microsoft.codealysis.Formatting.Formatter.FormatAsync(…)
可以完成这项工作,但它似乎只处理空白。因此,我开始在别处寻找,并发现了方法Microsoft.codesanalysis.CaseCorrection.CaseCorrector.caseCorrectorAsync(…)
,但不幸的是CaseCorrector
类是内部的。不过,这让我想知道,考虑到方法CaseCorrectAsync
是public
,这是否是一个bug
在我新的基于roslyn的应用程序中,是否有一种合理的方法来运行案例更正?正确的解决方案实际上是使用CaseCorrector
类,该类根据。因此,要解决这个问题,现在必须公开CaseCorrector
,在本地构建roslyn并使用修改后的二进制文件
如果需要,应该可以利用它来创建包含本地更改的roslyn nuget包。关于它是否是bug:不,很可能不是。Roslyn的许多助手都是内部的
,但在您证明需要后,团队会接受将他们公开的请求。不过,你可能应该在回购协议上为此创建一个问题。请记住,我们是这样的,因此你可以很容易地将其交给我们,并将其公开给你自己的工具。但是当然,也要把这个bug归档。@JasonMalinowski,如果我可能还有一个问题的话-是否有一些关于如何利用我所做的修改(例如,将CaseCorrector公开)在本地构建roslyn nuget包的说明?我不知道。我会给内部可能知道的人发一封电子邮件。