Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 如何在解决方案上运行案例更正?_.net_Vb.net_Roslyn - Fatal编程技术网

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

.net 如何在解决方案上运行案例更正?,.net,vb.net,roslyn,.net,Vb.net,Roslyn,我有一个基于roslyn的小应用程序,用于基于。此应用程序是我开发的旧代码格式化程序的新版本,在此基础上,我以编程方式对特定解决方案中的每个文件运行Visual Studio命令Edit.FormatDocument,如下所示: projectItem.Document.DTE.ExecuteCommand("Edit.FormatDocument"); 这不再是可以接受的,因此我开始开发新版本,它将执行与FormatDocument命令相同的任务。VB.NET源文件中此命令的一个功能是,它更

我有一个基于roslyn的小应用程序,用于基于。此应用程序是我开发的旧代码格式化程序的新版本,在此基础上,我以编程方式对特定解决方案中的每个文件运行Visual Studio命令
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包的说明?我不知道。我会给内部可能知道的人发一封电子邮件。