ご想像のとおり、私は roslyn について、特にコード アナライザーとして学んでいます。
構文の強調表示は完全に機能しています。ただし、次のコード アクションは、ノードを削除するときにサイレントに失敗します。
private async Task<Document> RemoveNode(Document document, LocalDeclarationStatementSyntax typeDecl, CancellationToken cancellationToken)
{
IEnumerable<SyntaxNode> oldNode = typeDecl.DescendantNodes().OfType<VariableDeclarationSyntax>();
SyntaxNode oldRoot = await document.GetSyntaxRootAsync(cancellationToken);
SyntaxNode newRoot = oldRoot.RemoveNode(oldNode.Single(), SyntaxRemoveOptions.KeepNoTrivia); //Analyzer fails here
return document.WithSyntaxRoot(newRoot);
}
主題:
namespace ConsoleApplication3
{
class Program
{
static void Main(string[] args)
{
FruitMix fm = new FruitMix(); //This is the matched node
}
}
}
Roslyn の操作方法に関する「より大きな」全体像を見逃しているように感じます。そのため、ここでのヘルプは素晴らしいものですが、役立つリンクやリソースもいくつかあります。
このプロジェクトをここにアップロードしましたが、「最小限の」例ではありませんが、問題を簡単に再現できます。上記のコードはCodeFixProvider.cs
.
ありがとう