我写了我自己的调试器可视化器。Visual Studio不加载我的调试器可视化器
它和属性都在它们自己的程序集中。包含要调试的类的程序集中没有引用或属性 - 我想制作一个可供人们使用的可选dll。
我试图调试的类是通用的。
[Serializable]
public class FinCellTable<S> : IFinCellTable, IEnumerable<List<FinCell.IFinCell>>
where S : class, FinCell.IFinHeaderCell, FinCell.IFinCell, new()
下面是可视化:
[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);
}
}
}
}
我运行Visual Studio 2010,和下面的目录包含展示台大会的.dll和.PDB:
C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\Packages\Debugger\Visualizers
我在一个特别是FinCellTable的IFinCellTable实例上放置一个断点。它不显示放大镜。
我调试Visual Studio使用另一个Visual Studio作为第一个VS调试。我看到输出窗口是第一个VS加载的DLL。当我在一个数据表上触发一个可视化器时,第二个VS输出它加载了Microsoft.VisualStudio.DebuggerVisualizers.dll和Microsoft.VisualStudio.Debugger.DataSetVisualizer.dll(后者来自我上面说的正确的目录)。 (模块窗口的行为/显示相同)。
因此很显然,我的调试器Visualizer Drop-In组件不是由VS加载的,所以它不知道要显示放大镜。
如何让视觉工作室预先加载展示器,因此插入式展示器工作而且您不需要编辑原始代码?
没有任何内容跳出。您*确实*在复制可视化器后重新启动VS,对吧? – 2010-08-13 16:58:28
你需要做某种UI或环境重装吗?这是以前版本中的附件所必需的。 – 2010-11-05 14:25:51
奇怪。我完成了你在这里描述的内容:http://www.adamjamesnaylor.com/HowToWriteADebugVisualiserInVisualStudio.aspx,它似乎工作正常。正如米歇尔问,你确定它在正确的文件夹?我问,因为在工作中,我的Visual Studio用户文件夹在网络共享上,VS在尝试访问共享时抛出安全异常。 – 2012-08-21 20:19:01