2

我安装了 VS2010 SDK 并创建了一个 VSPackage 项目,使用了一个空的“Initialize”方法。

[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();
   }
} 

如果我在“初始化”方法中设置断点并在调试模式下运行项目,它会启动实验性 VS 实例,但断点没有命中。它说没有加载调试符号。

我究竟做错了什么?

谢谢你的帮助,恩拉

4

1 回答 1

4

这是完全正常的行为。Visual Studio 会尝试将您的包加载到内存中,直到它绝对必须这样做。(例如,用户打开了项目类型或执行了您的包提供处理的命令。)

这种延迟加载是出于性能原因而完成的。如果 VS 在启动时加载了所有扩展和包,那么在每次启动 IDE 时,您将等待比所需时间更长的时间。

MSDN 上的这个页面有更详细的解释。

根据您发布的代码片段,您的包没有注册(通过 Provide* 属性)它具有任何功能,因此 Visual Studio 从来没有真正的理由来加载它。

于 2011-02-01T06:11:22.827 回答