c# - Visual Studio 加载项 : How do I know when a solution has finished loading

标签 c# visual-studio-2008 add-in envdte

我正在编写一个 VS2008 加载项(使用 DTE),需要在当前解决方案完成加载后得到通知。

我试过使用下面的代码:

events = (Events2) applicationObject.Events
events.SolutionEvents.Opened += DoSomeWorkEvent;

不幸的是,从 VS2005 开始,事件似乎在解决方案开始加载时抛出 - 而不是在它完成时抛出。

简短的互联网搜索产生了 following thread解释问题并提出解决方案(检查每个项目项以查看它是否已完成加载)。

这是可用的最佳解决方案还是有更好的方法来了解解决方案何时完成加载?

最佳答案

我找到了解决此问题的解决方法 - 我创建了一个在主线程上运行的 Windows.Forms.Timer 并检查解决方案是否已完成加载。

private void TimerTick(object sender, EventArgs e)
{
   try
   {
       var solution = applicationObject.Solution;
       if (solution.IsOpen && string.IsNullOrEmpty(solution.FileName) == false)
       {
           timer.Stop();
           // insert logic here
       }
   }
   catch (Exception exception)
   {
       Console.WriteLine(exception);
   }
}

关于c# - Visual Studio 加载项 : How do I know when a solution has finished loading,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1496809/

相关文章:

c# - 将 Rtf 格式转换为 HTML

c# - 有没有办法在执行代码时获取当前行号? C#

c++ - fatal error C1083 : Cannot open compiler intermediate file: '***.pch' : No such file or directory

c# Microsoft.Office.Interop.Word.Document 到流

c# - Button_Click 中的 "sender"(对象发送者...真的是发送者吗?

c# - 使用 Reflection.Emit 发出 "using (x) { ... }" block ?

c# - 如何通过 C# 在 Outlook 中创建一组联系人文件夹

带 EF6 的 C# 插件 - 在应用程序配置文件中找不到名为 'Entities' 的连接字符串

visual-studio-2008 - 使用 VC++ 2008 为 XP 构建屏幕保护程序

c# - 在 ASP.NET MVC 中跟踪 LINQ TO SQL 生成的查询