调用Visual Studio';s可视化工具

本文关键字:可视化 工具 Visual Studio 调用 | 更新日期: 2023-09-27 18:10:18

场景

到目前为止,我一直在尝试从代码/即时窗口手动调用Visual Studio的可视化工具,但没有成功。

我用以下代码编写了一个简单的控制台应用程序:

var dataset = new System.Data.DataSet();

然后,我将数据集添加到监视窗口中,并使用dataset Visualizer对其进行可视化。不出所料,这奏效了。

完成后,我在即时窗口中输入以下代码:

new Microsoft.VisualStudio.DebuggerVisualizers.VisualizerDevelopmentHost(dataset, typeof(EnhancedDataSetVisualizer.DataSetVisualizer)).ShowVisualizer();

导致以下异常(完全异常(:

System.IO.FileNotFoundException: Could not load file or assembly 'Microsoft.VisualStudio.Debugger.DataSetVisualizer, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified.
File name: 'Microsoft.VisualStudio.Debugger.DataSetVisualizer, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'
   at System.Reflection.Assembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, 
….

这对我来说真的很奇怪,因为如果我在Visual Studio中查看Debug->Widnow->Modules,我会发现DataSetVisualizer.dll已经加载:

Microsoft.VisualStudio.Debugger.DataSetVisualizer.dll   C:'Program Files (x86)'Microsoft Visual Studio 10.0'Common7'Packages'Debugger'Visualizers'Microsoft.VisualStudio.Debugger.DataSetVisualizer.dll No  No  Cannot find or open the PDB file.       18  10.0.30319.1    18/03/2010 12:06 PM 77AB0000-77AC2000   [6784] PresentingBugAid.vshost.exe: Managed (v2.0.50727)    

然而,它试图加载它,但失败了。我试着检查了融合日志(完整日志(:

…
file:///C:/SVN/Debugger/src/Test/PresentingMyTest/PresentingMyTest/bin/Debug/Microsoft.VisualStudio.Debugger.DataSetVisualizer.DLL.
LOG: Attempting download of new URL 
...

为了尝试,我将Microsoft.VisualStudio.Debugger.DataSetVisualizer.dll复制到c:''SVN''Degger''src''Test''PresentingMyTest''PresettingMyTest''bin''Debug'',然后重试上面的场景。这一次它似乎起了作用,可视化出现了,但它冻结了整个应用程序。此外,再次尝试它不再显示可视化效果。

后记

过了一段时间,我意识到我所做的可能很奇怪——Visual Studio的Visualizer被设计为在调试器的进程(devenv.exe(中运行,然而,在我的案例中,我一直试图强制在调试器(PresentingMyTest.exe(中加载可视化工具。虽然它没有解释为什么它在加载了Microsoft.VisualStudio.Degger.DataSetVisualizer.dll后仍试图加载它,但我想它解释了为什么它通常不起作用。

我考虑尝试的另一个解决方案是完全跳过VisualizerDevelopmentHost,而是通过反射直接调用DataSetVisualizer的Show方法,这是任何可视化都必须具备的方法。这是个好主意吗?

我意识到整个场景是完全没有支持的,然而,这对我的项目来说非常重要,我很高兴听到更多的想法和事情,我可以尝试让它发挥作用。

谢谢!

调用Visual Studio';s可视化工具

也许可以使用"Microsoft.VisualStudio.DebuggerVisualizer.VisualizerDevelopmentHost"类型和特定的ShowVisualizer((方法?我还没有时间玩vizualization调试器,所以这只是一个疯狂的猜测。