Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.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
逐字符分析和重写Visual Studio C#源代码文档_C#_Visual Studio_Roslyn - Fatal编程技术网

逐字符分析和重写Visual Studio C#源代码文档

逐字符分析和重写Visual Studio C#源代码文档,c#,visual-studio,roslyn,C#,Visual Studio,Roslyn,我一直在学习Roslyn,并在使用CSharpSyntaxRewriter机制处理代码方面取得了很大的进步。我最终的目标是拥有一个可定制的编码标准执行器。因此,我从Microsoft的代码格式化程序项目开始。现在我正在做的是格式化空白 这里的目标是学习Roslyn,因此我想编写代码来格式化所有空白,而不是使用Visual Studio和Roslyn中内置的格式化程序 Formatter.FormatAsync(document, cancellationToken: cancellationTo

我一直在学习Roslyn,并在使用
CSharpSyntaxRewriter
机制处理代码方面取得了很大的进步。我最终的目标是拥有一个可定制的编码标准执行器。因此,我从Microsoft的代码格式化程序项目开始。现在我正在做的是格式化空白

这里的目标是学习Roslyn,因此我想编写代码来格式化所有空白,而不是使用Visual Studio和Roslyn中内置的格式化程序

Formatter.FormatAsync(document, cancellationToken: cancellationToken);
我能够解析语法树,并且知道我可以使用CSharpSyntaxRewriter实现实现这一点所需的代码,但我想做的是以某种方式简单地获取代码的原始源文本,在源文件中逐个字符地执行任何必要的操作,然后将新文本作为文档放回

然而,我不知道是否有可能用Roslyn/VisualStudio做我想做的事情。我会这么想,因为源代码只是一个已经加载到VisualStudio中的文本文件,可以为它获取“document”对象

编辑 最佳解决方案是为C#源文件提供一个下拉菜单(或上下文菜单),然后对该文件进行所有修改。我无法将MEF/MPF链接到任何允许对源文件进行大规模修改的挂钩。因此,我转到了一个控制台应用程序

据我所知,MEF/MPF可以提供源文件的单个入口点,而Roslyn接口允许同时访问整个源文件。我相信这就是为什么微软使用Roslyn来实现他们的编码标准执行器


正如我所说的,我只看了一个月的Roslyn,所以我可能漏掉了一些明显的东西。

你可以考虑写段落,我说服了很多人跳过你的问题。请使用一些格式。我不知道Roslyn是怎么做的,但通常我们在CodePlex使用微软的托管软件包框架(MPF)或最近的MEF扩展来实现这类功能。我们很清楚。你想得到一个源文件,把它输入到Roslyn,从Roslyn得到同样的源文件,然后对它进行操作?你确定你需要Roslyn吗?Jeroen-抱歉,第一篇帖子,但是将来(或者我一弄清楚如何编辑)Guillaume会添加段落-不,我想做的是:将解决方案加载到进行语法分析的控制台应用程序中,然后,我可以使用CSharpSyntaxRewriter或一种机制来修改源代码,这种机制允许我逐个字符地检查代码