2015-01-20 14 views
7

Quando si utilizza il .NET compilatore Platform SDK Templates (https://visualstudiogallery.msdn.microsoft.com/849f3ab1-05cf-4682-b4af-ef995e2aa1a5)VS2015 Diagnostica con correzione codice - NuGet O VSIX O entrambi?

di creare una diagnostica Roslyn con codice fisso, ho ottenere sia un pacchetto NuGet e VSIX - come ha dichiarato il readme:

"Costruire questo progetto produrrà una dll analizzatore, così come i seguenti due modi si potrebbe desiderare di pacchetto che analizzatore:

  • pacchetto a NuGet (file .nupkg) che aggiungerà l'assembly come un analizzatore di progetto locale che partecipa alle build

  • Un'estensione VSIX (file .ssix) che applicherà l'analizzatore a tutti i progetti e funziona solo nell'IDE. "

Ora il seguente scenario: che cosa succede se entrambi sono installati - la NuGet come parte del progetto (ad esempio politica aziendale per questo progetto), la parte VSIX di installazione locale dello sviluppatore (ad esempio, così lei ottiene i analizzatori per anche altri progetti). A partire da oggi, i suggerimenti mostreranno due volte per lo scenario di cui sopra.

Posso in qualche modo dire a VS2015 che entrambi (NuGet/VSIX) sono effettivamente uguali (e viene eseguito solo una volta)? Oppure è preferibile un approccio per l'implementazione (ad esempio NuGet) e l'altro (VSIX) destinato esclusivamente al debug della diagnostica (più conveniente di NuGet)? C'è qualche guida ufficiale su questo?

(Nota: Io lavoro su NR6Pack)

risposta

4

Recentemente abbiamo fatto un cambiamento di unificare in base al nome dell'analizzatore. Pertanto, nel caso in cui l'analizzatore VSIX e l'analizzatore del progetto abbiano entrambi lo stesso nome assembly, verrà eseguito una sola volta e i problemi verranno segnalati una sola volta nell'elenco degli errori. Questo cambiamento dovrebbe apparire nel prossimo aggiornamento per VS2015 (ma purtroppo non è stato rilasciato nel VS 2015 CTP5 rilasciato di recente).

Riguardo NuGet vs VSIX è il meccanismo di dispiegamento:

  • Distribuzione attraverso NuGet e collegare un analizzatore di un progetto significa che l'analizzatore viaggia con il progetto di SourceControl e quindi è facile da applicare la stessa regola per Il gruppo. Significa anche che le build a riga di comando riportano i problemi segnalati dall'analizzatore.
  • Distribuire come VSIX significa che ogni progetto nel VS e quei problemi non verrebbero prodotti tramite le build a riga di comando.

Il modo in cui immagino che questo è che la maggior parte delle regole dovrebbero essere distribuiti tramite NuGet e applicate a squadra di livello ma le regole che sono le preferenze personali dovrebbero probabilmente essere distribuiti attraverso VSIXes.

+1

Cosa succede se due * diversi * NuGets/VSIX hanno identificatori identici denominati? Vai per attributi (quali), nome della classe, o quale combinazione? –

+0

Grazie per aver chiarito questo! –

+0

Oltre agli analizzatori con nome identico di diversi fornitori: qual è la storia delle versioni? Vale a dire VSIX è alla v2.0 mentre NuGet è ancora alla v1.4? (assumendo diversi analizzatori e correzioni di bug/comportamento diverso) –