我有一个类似的问题,我创建了一个调试可视化器:
using System.Windows.Forms;
using Microsoft.VisualStudio.DebuggerVisualizers;
[assembly: System.Diagnostics.DebuggerVisualizer(typeof(MatrixVisualizers.MatrixVisualiser), typeof(VisualizerObjectSource), Description="Visualize a matrix" )]
namespace MatrixVisualizers
{
public class MatrixVisualiser : DialogDebuggerVisualizer
{
protected override void Show(IDialogVisualizerService windowService, IVisualizerObjectProvider objectProvider)
{
MessageBox.Show(objectProvider.GetObject().ToString());
}
}
}
我在不同程序集中的基类上明确使用:
[Serializable]
[DebuggerVisualizer(typeof(MatrixVisualiser))]
public abstract class TwoDMatrix<T> : IMatrix<T>
where T : IEquatable<T>, IComparable<T>
{
...
}
但是,当我将 dll 复制到 c:\program files (x86)\Visual Studio 11.0\common7\Packages\Debugger\Visualizers 时,当我在代码中遇到断点时,我确实可以选择使用可视化器,但是选择可视化器会抛出一个 FileNotFoundException。它正确识别程序集(包括版本号 1.1.0.0)。
顺便说一句,我目前正在将其作为我正在尝试调试的单元测试运行。
我曾尝试使用 FusionLogger 来诊断此问题,但它没有在日志中显示为错误。
这可能与问题有关:https ://stackoverflow.com/questions/19118023/how-to-setup-debugger-visualizer-for-vs2012