TL; DRComment autoload Roslyn Analyzer (sans codefix)
- Création
VSIX Package
- Ajouté
Analyzer
article projet - Pressé F5.
- L'instance expérimentale démarre mais l'analyseur n'est pas chargé et ne peut pas être débogué.
- L'ajout manuel de l'analyseur fonctionne.
- Question: comment charger automatiquement l'analyseur?
Description du problème:
Il y a beaucoup de tutoriels (même docs officiels) qui commencent par un modèle de projet: Analyzer with Code Fix (NuGet + VSIX)
. Cependant, dans la dernière version de .NET Compiler Platform, je n'ai pas ce modèle de projet. J'ai donc créé un VSIX project
. Ensuite, j'ai créé un élément de projet Analyzer
. Notez que je n'ai pas d'article CodeFix
car je n'ai pas besoin de corriger le code, seulement afficher quelques avertissements.
C'est ce que j'ai (je l'ai fait quelques changements):
[DiagnosticAnalyzer(LanguageNames.CSharp)]
public class MyAnalyzer : DiagnosticAnalyzer
{
public const string DiagnosticId = "MyAnalyzer";
internal static readonly LocalizableString Title = "MyAnalyzer Title";
internal static readonly LocalizableString MessageFormat = "MyAnalyzer";
internal const string Category = "MyAnalyzer Category";
internal static DiagnosticDescriptor Rule = new DiagnosticDescriptor(DiagnosticId, Title, MessageFormat, Category, DiagnosticSeverity.Warning, true);
public override ImmutableArray<DiagnosticDescriptor> SupportedDiagnostics
=> ImmutableArray.Create(Rule);
public override void Initialize(AnalysisContext context)
{
context.RegisterSyntaxNodeAction(Analyze, SyntaxKind.IfStatement);
}
private void Analyze(SyntaxNodeAnalysisContext context)
{
IfStatementSyntax ifStatement = context.Node as IfStatementSyntax;
if(ifStatement == null)
return;
context.ReportDiagnostic(
Diagnostic.Create(
Rule,
context.Node.GetLocation(),
"Hey, this is an IF statement."));
}
}
}
Voilà. Le projet contient uniquement ce fichier, un .vsixmanifest
et un packages.config
. Lorsque j'exécute le projet en mode de débogage (avec F5), l'instance expérimentale est chargée et je peux voir le paquet dans Extensions and Updates
Cependant, aucun point d'arrêt n'est atteint (aucun symbole chargé) et l'analyseur n'est pas visible dans la liste des analyseurs (dans l'explorateur de solutions).
Je procédez comme suit:
- dossier Renommer dans le dossier de sortie .vsix.zip et l'ouvrir
- Extrait du DLL d'assemblage du zip
- analyseurs clic droit dans la solution explorateur
- manuellement parcourir/ajouter DLL
assemblée de l'analyseur Puis tout d'un coup, les symboles sont chargés et de bugger s'arrête sur les points d'arrêt.
Existe-t-il un moyen de charger automatiquement analzyer dans l'instance expérimentale? Est-ce que je manque une configuration?
Les modèles ont récemment été mis à jour: https://visualstudiogallery.msdn.microsoft.com/2ddb7240-5249-4c8c-969e -5d05823bcb89 – jessehouwing