Escribí mi propio Debugger Visualizer.Visual Studio no está cargando mi visualizador de depuración
Es, y los atributos, están en su propio conjunto. No hay referencias o atributos en el ensamblaje que contenga la clase que se va a depurar: deseo crear un archivo DLL opcional que las personas puedan usar.
La clase que estoy tratando de depurar es genérica.
[Serializable]
public class FinCellTable<S> : IFinCellTable, IEnumerable<List<FinCell.IFinCell>>
where S : class, FinCell.IFinHeaderCell, FinCell.IFinCell, new()
Aquí es el visualizador:
[assembly: System.Diagnostics.DebuggerVisualizer(
typeof(Financials.Debugging.CellTableVisualizer),
typeof(VisualizerObjectSource),
Target = typeof(Financials.Transformation.IFinCellTable),
Description = "FinCell Table Visualizer")]
[assembly: System.Diagnostics.DebuggerVisualizer(
typeof(Financials.Debugging.CellTableVisualizer),
typeof(VisualizerObjectSource),
Target = typeof(Financials.Transformation.FinCellTable<Financials.FinCell.FinHeaderCell>),
Description = "FinCell Table Visualizer")]
namespace Financials.Debugging
{
public class CellTableVisualizer : DialogDebuggerVisualizer
{
protected override void Show(IDialogVisualizerService windowService, IVisualizerObjectProvider objectProvider)
{
if (windowService == null) throw new ArgumentNullException("windowService");
if (objectProvider == null) throw new ArgumentNullException("objectProvider");
var data = (IFinCellTable)objectProvider.GetObject();
using (var displayForm = new CellTableVizForm())
{
displayForm.PopulateForm(data);
windowService.ShowDialog(displayForm);
}
}
}
}
Me postulo Visual Studio 2010, y el siguiente directorio contiene los archivos .dll y .pdb de la Asamblea visualizador:
C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\Packages\Debugger\Visualizers
I coloque un punto de interrupción en una instancia de IFinCellTable que sea específicamente FinCellTable. No muestra la lupa.
Depugé Visual Studio usando otro Visual Studio como el primer VS que estaba depurando. Vi la ventana de salida como la primera VS cargada dll. Cuando activé un visualizador en una tabla de datos, el segundo VS emitió que cargó Microsoft.VisualStudio.DebuggerVisualizers.dll y Microsoft.VisualStudio.Debugger.DataSetVisualizer.dll (este último del directorio correcto que dije anteriormente). (La ventana de Módulos se comporta/muestra lo mismo.)
Así que, obviamente, mi ensamblaje de Drop-In de Debugger Visualizer no se carga por VS, por lo que no sabe mostrar la lupa.
¿Cómo se obtiene visual studio para cargar los visualizadores por adelantado, por lo que los visualizadores integrados funcionan y no es necesario editar el código original?
Nada salta. Usted * reinició VS * después de copiar el visualizador, ¿verdad? –
¿Necesita hacer algún tipo de recarga de UI o entorno?Esto fue requerido para complementos en versiones anteriores. –
Extraño. Hice exactamente lo que describes aquí: http://www.adamjamesnaylor.com/HowToWriteADebugVisualiserInVisualStudio.aspx y parecía funcionar bien. Cuando Michel pregunta, ¿estás seguro de que está en la carpeta correcta? Lo pregunto porque en el trabajo mi carpeta de usuario de Visual Studio está en una red compartida y VS arroja excepciones de seguridad cuando intenta acceder al recurso compartido. –