我安装了VS2010 SDK并使用空的“Initialize”方法创建了一个VSPackage项目。
[PackageRegistration(UseManagedResourcesOnly = true)]
[InstalledProductRegistration("#110", "#112", "1.0", IconResourceID = 400)]
[Guid(GuidList.guidGrowl_Extras_VSAddInPkgString)]
public sealed class Growl_Extras_VSAddInPackage : Package
{
public Growl_Extras_VSAddInPackage()
{
Trace.WriteLine(string.Format(CultureInfo.CurrentCulture, "Entering constructor for: {0}", this.ToString()));
}
protected override void Initialize()
{
Trace.WriteLine(string.Format(CultureInfo.CurrentCulture, "Entering Initialize() of: {0}", this.ToString()));
base.Initialize();
}
}
如果我在“Initialize”方法中设置了一个断点并在调试模式下运行项目,它将启动实验VS实例,但断点不会被击中。它说没有加载调试符号。
我做错了什么?
感谢您的帮助, Enyra
答案 0 :(得分:4)
这是完全正常的行为。 Visual Studio尝试不将包加载到内存中,直到绝对必要。 (例如,用户打开了项目类型或执行了包提供处理的命令。)
此延迟加载是出于性能原因而完成的。如果VS在启动时加载了所有扩展和包,那么在每次启动IDE时,您将等待相当长的时间。
This page on MSDN进一步详细解释。
根据您发布的代码段,您的包不会注册(通过Provide *属性)它具有任何功能,因此Visual Studio从未真正有理由加载它。