我无法在最简单的VSIX项目中调试最简单的VS包。

重现步骤:

  • 创建VSIX项目:文件/新建/项目/可扩展性/VSIX项目
  • 添加Visual Studio包:在解决方案资源管理器中右键单击项目节点,然后选择添加/新建项/可扩展性/Visual Studio包
  • 打开新创建的包文件(VSPackage1.cs),并在第68行(Initialize()base.Initialize()
  • 的第一行)上放置一个断点
  • F5开始调试

  • 这将启动Visual Studio 2015的实验性实例,并安装了包(已在工具/扩展和更新... 中确认),但禁用了断点:

    visual-studio - 如何在Visual Studio 2015中创建的VSIX中调试Visual Studio程序包-LMLPHP

    上面的步骤来自新创建的VSIX项目的“入门指南”(index.html),因此它应该可以正常工作。

    附加信息:
  • 解决方案配置为调试,平台为任何CPU
  • 项目的Debug属性自动将启动外部程序设置为C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\devenv.exe命令行参数设置为/rootsuffix Exp
  • 我将设置为将调试符号复制到输出目录True,然后projectname.pdb文件正确显示在bin\Debug
  • bin\Debug\projectname.vsix文件包含projectname.pdb
  • 该项目包含在source.extension.vsixmanifest中的 Assets 中,以及Type=Microsoft.VisualStudio.VsPackage
  • 我尝试将项目添加到source.extension.vsixmanifestType=Microsoft.VisualStudio.MefComponent中的 Assets 中,但这似乎没什么作用。在此之后的第一次运行中,断点显示为启用,但未命中。在第二次及以后的运行中,断点在运行过程中返回到禁用状态。
  • 我尝试更改 list 中的版本,但我注意到有任何效果。
  • 我尝试单独运行实验实例,并使用调试器将其附加,但其行为与直接使用F5启动时的行为相同,没有任何区别。
  • 我尝试在Console.WriteLine方法中添加Initialize语句,但在Output窗口中找不到调试文本。
  • 我尝试使用x86平台而不是Any CPU,但结果相同。
  • 一位同事遵循相同的步骤并获得了相同的结果,因此它可能不特定于我的计算机。 (我邀请任何人遵循相同的步骤并证明我做错了,或者在我的步骤中发现错误。)

  • 所有这一切似乎表明VS软件包虽然已明确安装,但尚未初始化。我想念什么?如果相关的话,here是VS Package的源代码,here是整个虚拟项目。

    如果您需要更多信息,请告诉我。

    最佳答案


    要在VS启动时自动加载程序包,通常需要在主程序包类中添加ProvideAutoLoad属性。
    有关更多详细信息,请参见okta文档。

    关于visual-studio - 如何在Visual Studio 2015中创建的VSIX中调试Visual Studio程序包,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43497943/

    10-13 07:05