首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >visualizer没有加载我的调试器可视化工具

visualizer没有加载我的调试器可视化工具
EN

Stack Overflow用户
提问于 2010-08-13 15:23:40
回答 4查看 5.5K关注 0票数 6

我写了我自己的调试器。

它和属性都在它们自己的程序集中。程序集中没有包含要调试的类的引用或属性--我想创建一个可供人们使用的下拉dll。

我要调试的类是泛型的。

代码语言:javascript
复制
[Serializable]
public class FinCellTable<S> : IFinCellTable, IEnumerable<List<FinCell.IFinCell>>
    where S : class, FinCell.IFinHeaderCell, FinCell.IFinCell, new()

下面是可视化工具:

代码语言:javascript
复制
[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);
            }
        }
    }
}

我正在运行Visualizer 2010,下面的目录包含可视化程序集的.dll和.pdb:

代码语言:javascript
复制
C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\Packages\Debugger\Visualizers

我在IFinCellTable的一个实例上放置了一个断点,特别是FinCellTable。它没有显示放大镜。

我使用另一个Visual调试了Visual,作为第一个VS正在调试。当我在datatable上触发一个可视化工具时,第二个VS输出它加载了Microsoft.VisualStudio.DebuggerVisualizers.dll和Microsoft.VisualStudio.Debugger.DataSetVisualizer.dll (后者来自我前面提到的正确的目录)。( Modules窗口的行为/显示相同。)

所以很明显,我的调试器Visualizer插装组件不是由VS加载的,所以它不知道如何显示放大镜。

如何让visual studio预先加载可视化程序,所以插入可视化工具可以工作,而不需要编辑原始代码?

EN

回答 4

Stack Overflow用户

发布于 2010-11-11 09:13:22

猜测:您确定正确的文件在C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\Packages\Debugger\Visualizers中,而不是在C:\Users\<you>\AppData\Local\VirtualStore\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\Packages\Debugger\Visualizers

如果是的话,那要归功于UAC虚拟化

票数 3
EN

Stack Overflow用户

发布于 2015-11-03 16:04:31

这个问题已经有5年多的历史了,所以我认为它不再适用于最初的海报,而是对任何试图做类似事情的人而言:

当目标是接口时,System.Diagnostics.DebuggerVisualizer不工作。您必须指定具体类型。您必须在要可视化的每个具体类型上指定属性:

代码语言:javascript
复制
[System.Diagnostics.DebuggerVisualizer("Financials.Debugging.CellTableVisualizer, Financials.Debugging, Version=1.0.0.0, Culture=neutral, PublicKeyToken=...")]
[Serializable]
public class FinCellTable<S> : IFinCellTable, IEnumerable<List<FinCell.IFinCell>>
    where S : class, FinCell.IFinHeaderCell, FinCell.IFinCell, new()
{
票数 1
EN

Stack Overflow用户

发布于 2011-01-16 17:16:11

我认为可以在Tools > Options中禁用这一点:如果您没有看到DebuggerDisplay或DebuggerTypeProxy的效果,请确保没有检查Tools >Options> Debugging > General > Show结构在变量窗口中的作用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3478315

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档