47 votes

Comment spécifier l'ordre des visualiseurs de débogueur dans Visual Studio

J'ai travaillé sur un débogueur visualizer pour Visual Studio pendant un certain temps et alors que l'actuel visualizer fonctionne très bien. Le problème, c'est qu'il toujours se place en haut de la visualisation de la liste lors de l'examen d'une variable qui dérange vraiment quelques-uns des utilisateurs qui sont plutôt le Texte comme celui du haut (depuis le haut est aussi par défaut lors de l'ouverture de VS).

enter image description here

Je ne trouve pas de support pour cette sur DialogDebuggerVisualizer ou DebuggerVisualizerAttribute qui ont été mes premières pensées de sorte que j'ai été à récurer, de SORTE que/MSDN/Google pour plus d'informations sur la façon d'affecter l'ordre de tri de la visualiseurs (de préférence à mis le mien en dernier dans la liste), mais en vain.

Ci-dessous comment j'ai enregistrer mon visualizer, il montre juste un formulaire basé sur la valeur visualisée.

using Microsoft.VisualStudio.DebuggerVisualizers;

[assembly: System.Diagnostics.DebuggerVisualizer(
    typeof(Shorthand.VSAddins.JsonVisualizer.JsonVisualizer),
    typeof(VisualizerObjectSource),
    Target = typeof(string),
    Description = "Json Visualizer")]
namespace Shorthand.VSAddins.JsonVisualizer
{
    public class JsonVisualizer : DialogDebuggerVisualizer
    {
        protected override void Show(IDialogVisualizerService windowService, IVisualizerObjectProvider objectProvider)
        {
            var json = objectProvider.GetObject() as string;

            var form = new VisualizerForm { Json = json };
            windowService.ShowDialog(form);
        }
    }
}

Personne ne sait si il est possible d'influer sur l'ordre des visualiseurs ou devrais-je le laisser?

2voto

IvanH Points 2465

Je ne pense pas qu'il y est une solution. Mais il y a une solution:

Définir votre propre Texte de Visualisation et de mettre approprié DebuggerVisualizer de l'attribut avant l'attribut de votre JsonVisualizer. Le résultat sera que la chaîne sera lisible par défaut et Json Visualizer peut être choisi. Une fenêtre avec une zone de texte multiligne n'est pas trop de travail.

C'est probablement même pas nécessaire d'écrire visualizer. Il devrait être possible d'utiliser un interne mais je ne sais pas son nom (Qui classe est utilisé pour le Texte "Visualizer"?).

0voto

Aaron Hopkins Points 9

Il apparaît toujours en premier, de par leur conception. Sous le capot en fonte a trouvé le meilleur match de la variable il s'agit de réfléchir sur.

cependant, vous pouvez faire une des deux choses. Vous pourriez faire le visualizer apparaissent uniquement lorsque la piqûre contient ':' Ou vous pouvez utiliser la réflexion pour réorganiser le visualisateur en les ajoutant à la fin de la collection dans l'ordre que vous voulez, puis de retirer les originaux de la collection. Pour le dernier cas, il vous sera probablement nécessaire de modifier la collection de readonly à l'écriture. Par la réflexion.

Il n'y a pas de source fiable pour tirer sur les autres que de votre volonté de réussir.

0voto

Aaron H Points 722

J'imagine que VS 'sous le capot' peut facilement distinguer le type de chaîne de caractères et le type de xml, mais comme il s'agit simplement d'une chaîne de caractères, une question clé serait de savoir comment VS fait la différence entre les deux.

Pourriez-vous disséquer le visualiseur XML VS pour voir comment il fonctionne (même si vous devez utiliser un réflecteur sur la DLL pour le faire, vous pourrez peut-être voir la méthode qui fonctionne)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X