我无法在最简单的VSIX项目中调试最简单的VS包。
重现步骤:
创建一个VSIX项目:文件/新建/项目/可扩展性/VSIX项目
添加Visual Studio包:在解决方案资源管理器中右键单击项目节点,然后选择添加/新建项/可扩展性/Visual Studio包
打开新创建的包文件(
VSPackage1.cs
),并在Initialize()
的第一行base.Initialize()
上设置断点,即第68行按下
F5
开始调试
这会启动Visual Studio 2015的实验版,并安装了该包(在工具/扩展和更新...中确认),但断点被禁用:
以上步骤来自新创建的VSIX项目的入门指南(index.html
),因此应该可以工作。
附加信息:
- 解决方案配置为 调试(Debug),平台为 任何CPU(Any CPU)
- 项目的调试属性自动设置了 启动外部程序 为
C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\devenv.exe
并设置了 命令行参数 为/rootsuffix Exp
- 我将 将调试符号复制到输出目录(Copy Debug Symbols to Output Directory) 设置为
True
,然后projectname.pdb
文件正确地出现在bin\Debug
中 bin\Debug\projectname.vsix
文件包含projectname.pdb
- 该项目在 source.extension.vsixmanifest 的 Assets 中以
Type=Microsoft.VisualStudio.VsPackage
的形式包含 - 我尝试将项目添加到
source.extension.vsixmanifest
的 Assets 中,类型为Type=Microsoft.VisualStudio.MefComponent
但似乎没有什么效果。第一次运行后,断点出现且启用,但没被打中。在第二次和后续运行期间,断点再次变为禁用状态。 - 我尝试更改清单中的版本,但没有看到任何影响。
- 我尝试单独运行实验性实例并使用调试器附加到它,但与直接使用
F5
启动时一样,没有任何区别。 - 我在
Initialize
方法中添加了Console.WriteLine
语句,但无法在Output
窗口中找到调试文本。 - 我尝试使用 x86 平台而不是 Any CPU,但结果相同。
- 我的同事遵循相同的步骤,并获得相同的结果,因此这可能不是特定于我的计算机。 (我邀请任何人都可以遵循相同的步骤证明我错了,或在我的步骤中发现错误。)
所有这些似乎表明 VS 包未初始化,尽管它已明确安装。我错过了什么?如果相关,请参考此处的 VS 包源代码以及此处的整个虚拟项目。如果需要更多信息,请告诉我。