我正在为Visual Studio 2010编写VSIX扩展程序,但无法确定如何进行调试。
一个明显的方法是输出信息。扩展模板使用Trace.WriteLine()
。但在哪里找到它的输出呢?
我正在为Visual Studio 2010编写VSIX扩展程序,但无法确定如何进行调试。
一个明显的方法是输出信息。扩展模板使用Trace.WriteLine()
。但在哪里找到它的输出呢?
Visual Studio扩展可以像其他应用程序一样进行调试。您只需要设置调试体验来启动已加载扩展的devenv即可。请尝试以下步骤:
单击“启动外部程序”单选按钮,将其指向devenv.exe二进制文件,例如在我的计算机上位于:
C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\devenv.exe
但是,在非x64计算机上,您可以删除“(x86)”部分。
然后,将命令行参数设置为/rootsuffix Exp
。这将告诉Visual Studio使用实验性注册表而不是正常配置注册表。默认情况下,构建VSIX扩展时会将其自己注册在实验性注册表中。
现在,您可以按F5启动Visual Studio,并使用您的VSIX作为可用扩展程序。
@JaredPar的答案在技术上是正确的,但存在一个问题,即您需要为每个开发人员重新执行此过程,每次获取代码的新副本以及每次删除csproj.user
文件时都需要重新执行。这样做的话,设置将保存在csproj.user
文件中。
更好的选择是将设置放在csproj
文件中,以便不会丢失。不幸的是,Visual Studio不允许您自动执行此操作,因此您需要手动添加设置。幸运的是,任何项目的设置都是相同的。
右键单击卸载项目,然后再次右键单击并编辑csproj
项目文件。在XML中,在第一个PropertyGroup
之后(例如在TargetFramework
之后),添加以下内容:
<StartAction>Program</StartAction>
<StartProgram>$(DevEnvDir)\devenv.exe</StartProgram>
<StartArguments>/rootsuffix Exp</StartArguments>
这样做有以下优点:
正如@MBulli在评论中所述,如果你已经按照被接受的答案进行了更改,请删除你的*.csproj.user
文件,因为其中的设置将覆盖你添加到主要的csproj
文件中的设置。
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" />
还可以查看此答案。
如果您尝试调试 UnitTestExtension,您还应该像 这里 描述的那样将调试器附加到 vstest.*.exe 进程。否则,您可能会看到激活断点,但调试器永远不会命中它。