无法调试VSIX项目

时间:2011-10-14 11:58:10

标签: c# visual-studio-2010 debugging visual-studio-debugging vsix

我正在尝试开发我的第一个visual studio扩展项目,我安装了VS10 SDK并且能够创建一个新项目并且可以构建它,但是当我尝试调试符号时没有加载。我知道我可以调试到VSIX项目,因为我已经在线下载了一个示例项目,并且它已经加载了符号并且断点得到了很好的http://weshackett.com/2009/11/configure-vsix-project-to-enable-debugging/)。 所以必须特别关注我创建VSIX项目的方式(也许!)。 我注意到的一件事是dll和文件没有被复制到本地“应用程序数据”区域,只复制清单,而对于示例项目,所有文件都被复制,包括dll。我比较了两者之间的项目设置,它们都是相同的。 我希望这是有道理的,如果我能提供更多细节,请告诉我......

6 个答案:

答案 0 :(得分:13)

好的,我设法让它运转起来。为了做到这一点,我不得不卸载vsix项目并将文件编辑为xl文档。

从项目文件中删除以下行:

<IncludeAssemblyInVSIXContainer>
    false
</IncludeAssemblyInVSIXContainer>
<IncludeDebugSymbolsInVSIXContainer>
    false
</IncludeDebugSymbolsInVSIXContainer>
<IncludeDebugSymbolsInLocalVSIXDeployment>
    false
</IncludeDebugSymbolsInLocalVSIXDeployment>
<CopyBuildOutputToOutputDirectory>
    false
</CopyBuildOutputToOutputDirectory>
<CopyOutputSymbolsToOutputDirectory>
    false
</CopyOutputSymbolsToOutputDirectory>

或将它们设为true:

<IncludeAssemblyInVSIXContainer>
    true
</IncludeAssemblyInVSIXContainer>
<IncludeDebugSymbolsInVSIXContainer>
    true
</IncludeDebugSymbolsInVSIXContainer>
<IncludeDebugSymbolsInLocalVSIXDeployment>
    true
</IncludeDebugSymbolsInLocalVSIXDeployment>
<CopyBuildOutputToOutputDirectory>
    true
</CopyBuildOutputToOutputDirectory>
<CopyOutputSymbolsToOutputDirectory>
    true
</CopyOutputSymbolsToOutputDirectory>

如果它们不存在,则将它们添加到...节点下。

删除这些行并重建解决方案后,dll和pdb现在按预期复制到bin \ debug文件夹以及“AppData \ Local \ Microsoft \ VisualStudio \ 10.0Exp \ Extensions \”文件夹中。

答案 1 :(得分:1)

我有一个相同的问题-调试将开始,但是无论我在哪里设置一个断点,我都会看到它“无用”并且带有“断点不会被击中”的注释。我在这里检查了其他答案中的所有内容,然后在一个插件项目存储库(new report in January 2020)中找到了一个“贡献者指南”。

那么对我有帮助的是以下几点:打开项目属性,并在“调试”选项卡上确保:

  1. “开始操作”设置为“启动外部程序”,并且路径与devenv.exe的路径匹配-例如“ C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ Professional \ Common7 \ IDE \ devenv.exe”-默认情况下就是这样。

  2. “开始选项”的“命令行参数”设置为/rootsuffix Exp-默认情况下缺少,我必须添加它。

因此,一旦我添加了/rootsuffix Exp,它便开始工作-下次我按F5键时,插件代码中的断点将起作用。

答案 2 :(得分:0)

我在Visual Studio 2017中遇到了类似问题。 @Rubans描述的选项似乎不是必需的了吗?

在当前的构建配置中(很可能是Debug),您需要确保在Vsix属性页中选中了Deploy VSIX content to experimental instance for debugging

enter image description here

答案 3 :(得分:0)

我有同样的问题,在Visual Studio 2019中,调试命令运行参数为/rootsuffix Roslyn

在新的Visual Studio实例中,我打开ExtensionsManage Extensionsinstalled 我可以看到我项目的vsix扩展名,但是它是错误版本; 因此,我搜索了安装了新的Visual Studio实例的源vsix文件

幸运的是,在调试输出窗口中,通过[ProjectName].DLL搜索,我找到了正确的路径; 看起来像:

Exception thrown: 'System.OperationCanceledException' in mscorlib.dll
'devenv.exe' (CLR v4.0.30319: DefaultDomain): Loaded 'C:\USERS\我零0七\APPDATA\LOCAL\MICROSOFT\VISUALSTUDIO\16.0_E9F147B4ROSLYN\EXTENSIONS\我零0六\[ProjectName]\1.0\[ProjectName].dll'. Symbols loaded.
'devenv.exe' (CLR v4.0.30319: DefaultDomain): Loaded 'C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Reflection\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Reflection.dll'. 
Exception thrown: 'System.OperationCanceledException' in mscorlib.dll

我将所有文件(路径类似:C:\USERS\我零0七\APPDATA\LOCAL\MICROSOFT\VISUALSTUDIO\16.0_E9F147B4ROSLYN\EXTENSIONS\我零0六\[ProjectName]\1.0\[ProjectName].dll)替换为vsix项目输出文件,现在效果很好

答案 4 :(得分:0)

偶然发现了如何在vs 2017 15.9.20中修复它

暂时:在新VS中卸载扩展程序,通过F5重新运行新VS,然后清理并重建解决方案,然后再次由F5运行。

在卸载扩展程序后重新运行VS时,新的VS“理解”您的扩展程序已被删除。之后,您将重建代码并将其“放入”新的VS。

详细:

  • 运行F5,在新的VS中转到“扩展程序”并卸载您的扩展程序
  • 关闭新的VS
  • 在打开的“卸载VSIX”窗口中-卸载扩展程序
  • 不做任何更改,只需按F5重新运行代码,检查是否在新启动的VS中删除了扩展名,关闭了新的VS
  • 在您的编码VS中-干净的解决方案
  • 重建
  • 由F5运营,请尽情享受

答案 5 :(得分:0)

在那儿..在VS-2019中,我正在开发一个运行良好的VSIX Async,但是在某个时候,Visual Studio实验版本停止以调试模式加载我的VSIX。

我不确定根本原因,但恰好与在Visual Studio的同一解决方案中打开第二个VSIX项目模板相吻合。不知道这是否与问题有关,但是在第一次运行时,我发现两个VSIX-es均已加载到实验版会话中。那时,我关闭并重置了实验版本。在下次运行时,调试时似乎没有VSIX被加载到实验版本中。..非常令人沮丧!

我找到的解决方案,随便摆弄

  • 关闭任何Visual Studio实例
  • 使用“开始”菜单中的命令行工具
  • 重置Visual Studio实验版本
  • 打开 VS,加载您的VSIX解决方案
  • 清理您的VSIX解决方案
  • 切换到发布模式(是,请执行。)
  • 重建解决方案,然后运行
  • 在“仅我的代码”警告弹出窗口中,选择“继续调试”
  • 实验版现在将从您的VSIX开始!它已加载!
  • 调试时释放模式不方便。 关闭Exp版本,您将回到VSIX解决方案中
  • 切换回调试模式
  • 再次运行

对我来说,上述顺序使问题消失了。 VSIX已加载。