2016-01-29 6 views
6

Ich habe ein paar Diagnose-Analyzer und Code-Fixes erstellt. Sie alle arbeiten wie erwartet im experimentellen Bienenstock.Analysator arbeitet, aber potentielle Code-Fixes verschwinden

Ich baue sie als Nuget Paket und fügen Sie zu einem Projekt in einer normalen Instanz von VS2015. Seltsamerweise funktioniert eine der Analysator/Code-Fix-Combos korrekt, aber für den anderen funktioniert nur der Analyzer und es werden keine Code-Fixes vorgeschlagen (wie erwähnt, funktioniert es im Experimental-Hive).

Meine Frage ist, wie kann ich dieses Problem analysieren? In ActivityLog.xml ist nichts enthalten. Hat jemand anderes dieses Verhalten beobachtet?

AKTUALISIEREN: Ich getestet mit der VSIX-Erweiterung in einer normalen Instanz und der Code-Fix erschien korrekt. Ich habe diese Datei geschlossen und wieder geöffnet und der Code-Fix war nicht mehr verfügbar. Ganz gleich, wie oft ich die Datei schließe und wieder öffne, der Code-Fix kommt nicht zurück. Aber dann öffne ich eine andere Datei, die einen anderen Diagnose- und Code-Fix enthält, und das startet irgendwie den anderen Code-Fix, weil ich dadurch den Code-Fix zuverlässig wiederherstellen kann!

Das klingt vielleicht lächerlich, aber ich denke, ich habe dies mit anderen 3rd-Party-Analysatoren beobachtet. Vielleicht gibt es ein Problem mit meiner VS-Installation?

+0

Roslyn Quellcode [on GitHub] (https://github.com/dotnet/roslyn). Die Analysatoren müssen von dort irgendwie ausgelöst werden (vermutlich ist es der [AnalyzerDriver] (https://github.com/dotnet/roslyn/blob/a4e375b95953e471660e9686a46893c97db70b0e/src/Compilers/Core/Portable/DiagnosticAnalyzer/AnalyzerDriver.cs). Sie könnten [debug Roslyn] (https://github.com/dotnet/roslyn/wiki/Building-Testing-and-Debugging) über deine Analysatoren hinaus, um zu sehen, warum es nicht funktioniert. –

+0

Ich sehe die gleiche Sache auf VS 2017 RTM auf dem Standard-Code-Analyzer-Projekt, die Kleinschreibung in Typ Symbole überprüft.Die Code-Reparatur funktioniert manchmal, manchmal nicht.Es zeigt die Code-Fix Glühbirne, aber wenn ich es anklicke, verschwindet es einfach, anstatt die Liste der Code-Fixes zu zeigen Ich habe versucht, sowohl F5 (VSIX) als auch die Installation des von mir erstellten nigets auszuführen Ich habe noch keinen zuverlässigen Weg gefunden, um dieses Verhalten zu beheben, und scheint wie ein Fehler in Roslyn oder möglicherweise Visual Studio zu sein. – angularsen

Antwort

0

Ich konfrontiert ähnliche peinliche Problem, wenn ich ein Nuget-Paket für Roslyn Analysatoren und Code-Fix-Anbieter entwickelt. Wenn ich den Code aktualisierte und das Paket in den Projekten installierte, wurde das alte Paket anstelle des neuen ausgeführt. Als ich Visual Studio geschlossen und wieder geöffnet habe, wurde das neue Nuget-Paket ausgeführt.

Ich bin mir nicht sicher, aber ich denke, es gibt einen Cache-Mechanismus für Nuget-Pakete in Visual Studio. Ich habe die folgende Methode nicht versucht, aber es kann helfen, Ihr Problem zu lösen.

How to clear NuGet package cache using command line?

Verwandte Themen