相关疑难解决方法(0)

使用语句Roslyn脚本/代码排序和删除(未使用)?

使用语句Roslyn脚本/代码排序和删除(未使用)?我正在寻找一些可以运行项目并排序和删除未使用的using语句的.NET/Roslyn(编译器作为服务)代码.我相信罗斯林可以做到这一点吗?任何人都可以指向可以重写的代码吗?

c# compiler-construction refactoring roslyn

9
推荐指数
1
解决办法
3538
查看次数

使用Roslyn访问和修改解决方案中的所有文档

我想使用Roslyn遍历给定解决方案中每个项目的所有文档.

这是我现在的代码:

var msWorkspace = MSBuildWorkspace.Create();
var solution = await msWorkspace.OpenSolutionAsync(solutionPath);
foreach (var project in solution.Projects)
{
    foreach (var document in project.Documents)
    {
        if (document.SourceCodeKind != SourceCodeKind.Regular)
            continue;

        var doc = document;
        foreach (var rewriter in rewriters)
        {
            doc = await rewriter.Rewrite(doc);
        }

        if (doc != document)
        {
            Console.WriteLine("changed {0}",doc.Name);
            //save result

            //the solution is now changed and the next document to be processed will belong to the old solution
            msWorkspace.TryApplyChanges(doc.Project.Solution);
        }                    
    }
}
Run Code Online (Sandbox Code Playgroud)

这里的问题是,罗斯林在很大程度上是不可改变的.在第一个"msWorkspace.TryApplyChanges"之后,解决方案和文档现在被替换为新版本.

所以下一次迭代仍将遍历旧版本.有没有办法以Roslyn惯用的方式做到这一点?或者我是否必须诉诸某种for(int projectIndex = 0;projectIndex …

c# roslyn

7
推荐指数
1
解决办法
986
查看次数

标签 统计

c# ×2

roslyn ×2

compiler-construction ×1

refactoring ×1