2016-01-29 6 views
6

Ho creato un paio di analizzatori diagnostici e correzioni di codice. Tutti lavorano nell'alveare sperimentale come previsto.Analizzatore funzionante ma scompaiono le potenziali correzioni del codice

Li compongo come pacchetto Nuget e aggiungo a un progetto in un'istanza normale di VS2015. Stranamente uno dei combo analizzatore/codice-correzione funziona correttamente, ma per l'altro solo l'analizzatore funziona e non vengono suggerite correzioni di codice (come accennato funziona nell'hive sperimentale).

La mia domanda è, come posso analizzare questo problema? Non c'è nulla in ActivityLog.xml. Qualcun altro ha osservato questo comportamento?

UPDATE: Ho provato a utilizzare l'estensione VS vsix in un'istanza normale e la correzione del codice è apparsa correttamente. Ho chiuso il file e riaperto e la correzione del codice non era più disponibile. Non importa quante volte chiudo e riapri il file, la correzione del codice non ritorna. Ma poi apro un altro file che contiene una diversa diagnostica e correzione del codice, e questo in qualche modo avvia l'altra correzione del codice, perché posso ottenere in modo affidabile la correzione del codice facendo ciò!

Questo potrebbe sembrare ridicolo, ma penso di averlo osservato con altri analizzatori di terze parti. Forse c'è un problema con la mia installazione di VS?

+0

Roslyn codice sorgente è [su GitHub] (https://github.com/dotnet/roslyn). Gli analizzatori devono essere attivati ​​da lì in qualche modo (presumibilmente è il [AnalyzerDriver] (https://github.com/dotnet/roslyn/blob/a4e375b95953e471660e9686a46893c97db70b0e/src/Compilers/Core/Portable/DiagnosticAnalyzer/AnalyzerDriver.cs). [debug Roslyn] (https://github.com/dotnet/roslyn/wiki/Building-Testing-and-Debugging) a fianco degli analizzatori per capire perché non funziona. –

+0

Sto vedendo la stessa identica cosa su VS 2017 RTM sul progetto di analisi del codice di default, che verifica la presenza di caratteri minuscoli nei simboli di tipo.Alla volta la correzione del codice funziona, a volte no.Mostra la lampadina di correzione del codice, ma quando faccio clic, scompare invece di mostrare l'elenco delle correzioni del codice Provato a eseguire sia F5 (VSIX) sia installando il nuget che crea. Non ho ancora trovato un modo affidabile per correggere questo comportamento e sembra un bug in Roslyn o forse in Visual Studio. – angularsen

risposta

0

Ho affrontato un problema simile quando ho sviluppato un pacchetto Nuget per analizzatori Roslyn e provider di codici. Quando ho aggiornato il codice e installato il pacchetto nei progetti, il vecchio pacchetto era in esecuzione al posto del nuovo. Quando ho chiuso e riaperto Visual Studio, il nuovo pacchetto Nuget era in esecuzione.

Non sono sicuro, ma suppongo che ci sia un meccanismo di cache per i pacchetti Nuget in Visual Studio. Non ho provato il metodo qui sotto, ma potrebbe aiutare a risolvere il tuo problema.

How to clear NuGet package cache using command line?