我无法在最简单的 VSIX 项目中调试最简单的 VS 包。
重现步骤:
VSPackage1.cs
)并在第 68 行,即 Initialize()
的第一行放置一个断点, base.Initialize()
F5
开始调试 这将启动 Visual Studio 2015 的实验性实例,并安装了包(在 工具/扩展和更新... 中确认),但断点被禁用:
上述步骤来自新创建的 VSIX 项目的入门指南 (
index.html
),所以它应该可以工作。附加信息:
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
与 Type=Microsoft.VisualStudio.VsPackage
source.extension.vsixmanifest
与 Type=Microsoft.VisualStudio.MefComponent
但这似乎没有多大作用。在此之后的第一次运行中,断点似乎已启用,但未命中。在第 2 次和后续运行中,断点在运行期间返回禁用状态。 F5
启动时的行为方式相同。 ,没有任何区别。 Console.WriteLine
Initialize
中的声明方法,但我在 Output
中找不到调试文本 window 。 所有这些似乎都表明 VS 包没有被初始化,尽管它已经明确安装。我错过了什么?如果相关,here是 VS 包的源代码,以及 here是整个虚拟项目。
如果您需要更多信息,请告诉我。
最佳答案
VSPackages are loaded into Visual Studio only when their functionality is required. For example, a VSPackage is loaded when Visual Studio uses a project factory or a service that the VSPackage implements. This feature is called delayed loading, which is used whenever possible to improve performance.
要在 VS 启动时自动加载包,您通常会向主包类添加一个 ProvideAutoLoad 属性。
见 Loading VSPackages文档了解更多详情。
关于visual-studio - 如何在 Visual Studio 2015 中创建的 VSIX 中调试 Visual Studio 包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43497943/