1

我创建了一个新的 Visual Studio 包,它在加载时会创建一个如下所示的工具窗口:

在此处输入图像描述

它由一些带有画布的控件组成,可以在 2 或 3 维中绘制形状。现在,它们在初始化步骤中工作以创建您在上面看到的对象。为了使这个工具有用,我想在这些控件上调用一个方法来传递其他对象进行绘制。例如,我正在调试一些带有点和线的代码,并希望以图形方式查看它们。(也许使用即时窗口?或类似的东西?)我希望能够调用 GeometryVisualToolWindow.DrawObject(myCircle);

如何访问包中的公共方法并传递参数?

我不想使用调试器可视化器,因为我希望能够有选择地从场景中添加和删除对象,其中调试器可视化器只会显示单个对象。(例如我想看看两条线是否相交等)


更新

我试图用它DTE.Debugger.GetExpression来解决这个问题,但是在添加了适当的引用之后,我得到了这个:

在此处输入图像描述

4

1 回答 1

0

我将告诉您如何在 Visual Studio 调试会话中执行任意代码。

参见自动化模型:http: //i.msdn.microsoft.com/dynimg/IC75297.gif

您可以访问DTE.Debugger的实例,如下所述:http: //msdn.microsoft.com/en-us/library/aa291845 (v=vs.71).aspx (Visual Studio 调试器对象模型)。

然后您可以选择:

1) 执行 VS debugger( ExecuteStatement) 中的实际语句。这意味着您需要将所有程序集加载到特定的调试器会话中。加载的程序集需要注意添加用户可以调用的静态函数。比如GeometryVisualToolWindow.DrawObject(myCircle);。该方法需要与 VSPackage 进行通信。

或者

2) 使用 VSPackage 中的 GetExpression("myVariable.SerializeToBase64()") ,瞧,您已经序列化了myVariable. 当然,你首先需要注入这样的功能。

http://msdn.microsoft.com/en-us/library/aa291625(v=vs.71).aspx

于 2014-10-07T17:50:52.180 回答