Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 2012 无法加载DebuggerVisualizer_Visual Studio 2012_Reflection_Debuggervisualizer - Fatal编程技术网

Visual studio 2012 无法加载DebuggerVisualizer

Visual studio 2012 无法加载DebuggerVisualizer,visual-studio-2012,reflection,debuggervisualizer,Visual Studio 2012,Reflection,Debuggervisualizer,我遇到了类似的问题,我创建了一个调试可视化程序: using System.Windows.Forms; using Microsoft.VisualStudio.DebuggerVisualizers; [assembly: System.Diagnostics.DebuggerVisualizer(typeof(MatrixVisualizers.MatrixVisualiser), typeof(VisualizerObjectSource), Description="Visualiz

我遇到了类似的问题,我创建了一个调试可视化程序:

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>
{
...
}
[可序列化]
[DebuggerVisualizer(typeof(MatrixVisualiser))]
公共抽象类TwoDMatrix:IMatrix
其中T:i可比,i可比
{
...
}
但是,当我将dll复制到c:\program files(x86)\Visual Studio 11.0\common7\Packages\Debugger\Visualizers时,我确实可以选择在代码中遇到断点时使用可视化程序,但选择可视化程序会引发FileNotFoundException。它正确标识程序集(包括版本号1.1.0.0)

顺便说一句,我目前正在运行一个单元测试,我正试图调试它

我曾尝试使用FusionLogger诊断此问题,但在日志中没有显示为错误


这可能与以下问题有关:

您的测试项目还通过属性依赖可视化工具DLL。它永远不会在VS目录中找到该DLL。不确定该如何工作,示例显示了框架类的可视化工具并使用[DebuggerVisualizer]目标属性。您最好将可视化工具DLL保留在测试项目生成目录中。将可视化工具DLL添加到测试生成目录同样不起作用,除非我在要调试和可视化的特定测试中显式加载程序集。也就是说,我必须在测试开始时添加
Assembly.Load(“MatrixSualizers,Version=1.1.0.0,Culture=neutral,PublicKeyToken=null”
。这对我来说似乎完全错误,dll肯定应该由IDE加载,而不是由我的代码加载。为了澄清这一点,我编写了一个非常简单的控制台应用程序,其主要功能是
Assembly.Load(“MatrixSualizers,Version=1.1.0.0,Culture=neutral,PublicKeyToken=null”);var sut=GetAMatrix();Console.WriteLine(sut);
如果我在
Console.WriteLine
上中断并可视化它是成功的(使用构建目录中的dll),但是如果我删除第一行它就会失败