小编Jer*_*ohn的帖子

如何使用 Roslyn 代码修复提供程序 API 从文档中删除 SyntaxNode 列表?

我有一个自定义生成的变量声明,使用根据某些条件收集SyntaxFactory.VariableDeclaration的列表。SyntaxNode

我做了以下事情:

  1. 修改节点

    var newRoot = root.ReplaceNode(expression, newVariableDeclaration)
    
    Run Code Online (Sandbox Code Playgroud)

    这样就成功修改了节点newVariableDeclaration

  2. 在循环中删除与列表中存在的节点相对应的节点

    foreach (var listObject in listObjects)
    {
        newRoot = newRoot.RemoveNode(listObject, SyntaxRemoveOptions.KeepNoTrivia);
    }
    
    Run Code Online (Sandbox Code Playgroud)

    这不会改变,newRoot并且所有listObject需要更改的内容都保持不变。

如果我们使用root.RemoveNode(listObject, SyntaxRemoveOptions.KeepNoTrivia)它,显然它会继续替换以前的更改。

所以这里newVariableDeclaration是整个文档中唯一发生更改的节点,这是因为我从 获得的newRoot SyntaxNodes的节点发生了更改。SyntaxNoderoot

如果我做错了,请纠正我。

编辑: 我调查过,CSharpSyntaxRewriter但它似乎每次访问一个节点时都在分析单个节点,并且一次只能修改一个节点。在我的场景中,我必须访问特定节点,对其进行更改,并根据对访问节点所做的更改删除其他节点。

c# vsix roslyn visual-studio-2013

3
推荐指数
1
解决办法
2211
查看次数

无法创建新的"带代码修复的诊断"项目!(罗斯林+ VS2013)

Visual Studio 2013Roslyn SDK预览安装之后

  1. Roslyn SDK项目Templates.vsix
  2. Roslyn语法Visualizer.vsix
  3. 将Roslyn Preview安装到Roslyn Experimental Hive.exe中

以该顺序

我无法使用代码修复在Roslyn-> Diagnostics创建一个新项目,我收到一条警告消息,如下所示.

警告弹出窗口

c# diagnostics roslyn visual-studio-2013

2
推荐指数
1
解决办法
401
查看次数

标签 统计

c# ×2

roslyn ×2

visual-studio-2013 ×2

diagnostics ×1

vsix ×1