我无法在最简单的VSIX项目中调试最简单的VS包。
重现的步骤:
创建一个VSIX项目:文件/新建/项目/扩展性/ VSIX项目
添加Visual Studio包:右键单击解决方案资源管理器中的项目节点,然后选择添加/新建项目/可扩展性/ Visual Studio包
打开新创建的包文件(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
的资产中添加项目,但这似乎并不多。在此之后的第一次运行中,断点似乎已启用,但未被击中。在第二次和后续运行中,断点在运行期间返回到禁用状态。F5
启动时的行为相同,没有任何区别。Console.WriteLine
方法中添加Initialize
语句,但我在Output
窗口中找不到调试文本。所有这些似乎表明VS Package没有初始化,尽管它已经明确安装。我错过了什么?如果它是相关的,here是VS包的源代码,here是整个虚拟项目。
如果您需要更多信息,请告诉我们。
答案 0 :(得分:3)
VSPackage仅在其功能时加载到Visual Studio中 是必须的。例如,在Visual Studio中加载VSPackage 使用项目工厂或VSPackage实现的服务。 此功能称为延迟加载,无论何时使用 可以提高绩效。
要在VS启动时自动加载程序包,通常会将ProvideAutoLoad属性添加到主程序包类中。
有关详细信息,请参阅Loading VSPackages文档。
答案 1 :(得分:0)
为了补充其他答案,OP的实际问题的解决方案是:
请忽略该消息,不要担心。符号不会立即加载 ,但是在断点准备好被击中时它们将被加载。