99

我只是在为 Visual Studio 2010 编写一个 VSIX 扩展,但不知道如何调试它。

一种明显的方法是输出消息。扩展模板使用Trace.WriteLine(). 但是在哪里可以找到它的输出呢?

4

4 回答 4

192

Visual Studio Extensions 可以像任何其他应用程序一样进行调试。您只需要设置调试体验即可使用加载的扩展启动 devenv。尝试以下

  • 右键单击项目并选择属性
  • 转到调试选项卡

单击 的单选按钮Start External Program。将其指向 devenv.exe 二进制文件。在我的机器上,它位于

C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\devenv.exe

在非 x64 机器上,您可以删除“(x86)”部分。

然后将命令行参数设置为/rootsuffix Exp. 这告诉 Visual Studio 使用实验配置单元而不是普通配置配置单元。默认情况下,VSIX 扩展在构建时会在实验性配置单元中注册。

现在您可以按 F5,它将以您的 VSIX 作为可用扩展启动 Visual Studio。

于 2012-02-14T18:07:08.463 回答
61

@JaredPar 接受的答案在技术上是正确的,但存在这样一个事实,即您需要为每个开发人员、每次获得新的代码副本以及任何时候csproj.user删除文件时都重做它。当您这样做时,设置将保存在csproj.user文件中。

更好的选择是将设置放入csproj文件中,这样它们就不会丢失。不幸的是,Visual Studio 不允许您自动执行此操作,因此您需要手动添加设置。幸运的是,任何项目的设置都是相同的。

右键单击并卸载项目,然后再次右键单击并编辑csproj项目文件文件。在 XML 中,将以下内容添加到第一个PropertyGroup,例如在TargetFramework.

<StartAction>Program</StartAction>
<StartProgram>$(DevEnvDir)\devenv.exe</StartProgram>
<StartArguments>/rootsuffix Exp</StartArguments>

这具有以下优点;

  • 它设置它以进行调试和发布
  • 它运行您当前正在运行的任何版本的 Visual Studio
  • 它被检查到源代码控制中,因此每个开发人员都不必记住如何去做:)

正如@MBulli 在评论中所说,如果您在接受的答案中进行了更改,请删除您的*.csproj.user文件,因为其中的设置将覆盖您添加到主csproj文件中的设置。

于 2015-06-08T16:22:10.773 回答
2

OutputWindowHelper.OutputString方法写入“常规”输出窗口窗格 (Ctrl Alt o) 我在我的 .csproj 引用中添加了这一行,以便在 VS 2013 中得到它

<Reference Include="Microsoft.VisualStudio.Services.Integration, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" />

另请参阅此答案

于 2014-08-17T21:28:42.580 回答
0

如果您尝试调试 UnitTestExtension,您还应该将调试器附加到 vstest.*.exe 进程,如此所述。否则,您可能会看到激活断点,但调试器永远不会命中它。

于 2015-09-18T08:20:54.760 回答