簡體   English   中英

Visual Studio未加載我的調試器可視化工具

[英]Visual Studio is not loading my debugger visualizer

我編寫了自己的Debugger Visualizer。

它和屬性都在它們自己的程序集中。 包含要調試的類的程序集中沒有引用或屬性 - 我想創建一個可供人們使用的drop-in 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,以下目錄包含Visualizer程序集的.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(后者來自我上面說的正確目錄)。 (“模塊”窗口的行為/顯示相同。)

所以很明顯我的Debugger Visualizer Drop-In程序集不會被VS加載,所以它不知道顯示放大鏡。

你如何讓Visual Studio來加載展示台的前期,所以插入式展示台的工作 ,你不需要編輯您的原代碼?

猜測:你確定正確的文件是在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虛擬化

這個問題已經超過5年了,所以我認為它與原始海報不再相關,但對於其他試圖做類似事情的人來說:

當target是接口時,System.Diagnostics.DebuggerVisualizer不起作用。 您必須指定具體類型。 您必須在要顯示的每個具體類型上指定屬性:

[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()
{

放置它的正確文件夾是:C:\\ Program Files(x86)\\ Microsoft Visual Studio 12.0 \\ Common7 \\ Packages \\ Debugger \\ Visualizers。 一旦你把這個DLL放在那里並重新啟動visual studio,那么你應該在“Expression”類型的變量上得到一個“放大鏡”(在調試模式下,你將在觀察窗口中獲得它,當你將鼠標光標移動到變量上時)

我相信可以在工具>選項中禁用它:如果沒有看到DebuggerDisplay或DebuggerTypeProxy的效果,請確保未選中工具>選項>調試>常規>顯示變量窗口中對象的原始結構。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM