Visual studio 如何在Visual Studio 2015中创建的VSIX中调试Visual Studio包

Visual studio 如何在Visual Studio 2015中创建的VSIX中调试Visual Studio包,visual-studio,debugging,visual-studio-2015,vsix,visual-studio-sdk,Visual Studio,Debugging,Visual Studio 2015,Vsix,Visual Studio Sdk,我无法在最简单的VSIX项目中调试最简单的VS包 复制步骤: 创建VSIX项目:文件/New/project/Extensibility/VSIX项目 添加Visual Studio包:在解决方案资源管理器中的项目节点上单击鼠标右键,然后选择“添加/新建项/扩展性/Visual Studio包” 打开新创建的包文件(VSPackage1.cs),并在第68行(Initialize(),base.Initialize()的第一行)上放置一个断点 按F5开始调试 这将启动Visual Studio

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

复制步骤:

  • 创建VSIX项目:文件/New/project/Extensibility/VSIX项目

  • 添加Visual Studio包:在解决方案资源管理器中的项目节点上单击鼠标右键,然后选择“添加/新建项/扩展性/Visual Studio包”

  • 打开新创建的包文件(
    VSPackage1.cs
    ),并在第68行(
    Initialize()
    base.Initialize()
    的第一行)上放置一个断点

  • F5
    开始调试

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

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

    其他信息:

    • 解决方案配置为调试,平台为任何CPU
    • 项目的调试属性自动将启动外部程序设置为
      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
      中的资产中,类型为Microsoft.VisualStudio.VsPackage
    • 我尝试将项目添加到
      source.extension.vsixmanifest
      中的Assets中,并使用
      Type=Microsoft.VisualStudio.MefComponent
      ,但效果似乎不大。在此之后的第一次运行中,断点显示为已启用,但未命中。在第二次和后续运行中,断点在运行期间返回到禁用状态
    • 我试图更改清单中的版本,但我注意到了任何效果
    • 我尝试单独运行实验实例,并使用调试器附加到它,但其行为方式与使用
      F5
      直接启动时相同,没有任何区别
    • 我尝试在
      Initialize
      方法中添加
      Console.WriteLine
      语句,但在
      输出
      窗口中找不到调试文本
    • 我尝试了x86平台而不是任何CPU,但结果相同
    • 一位同事遵循相同的步骤,得到了相同的结果,所以这可能不是我的电脑特有的。(我请任何人按照同样的步骤证明我错了,或者找出我步骤中的错误。)
    所有这些似乎都表明VS包没有得到初始化,尽管它显然已经安装好了。我错过了什么?如果它是相关的,那么它就是VS包的源代码,也是整个虚拟项目

    如果你需要更多的信息,请告诉我

    VSPackages仅在其功能正常时加载到Visual Studio中 是必需的。例如,当VisualStudio加载VSPackage时 使用VSPackage实现的项目工厂或服务。 此功能称为延迟加载,可在任何时候使用 有可能提高性能

    要在VS启动时自动加载包,通常需要向主包类添加ProvideAutoLoad属性


    有关更多详细信息,请参阅文档。

    要补充此处的另一个答案,OP实际问题的解决方案是:

    忽略这个信息,不要担心。符号目前未加载,但将在断点准备好被命中时加载