【问题标题】:Is there an event triggered when dte.Solution.SolutionBuild.StartupProjects changes?dte.Solution.SolutionBuild.StartupProjects 更改时是否触发了事件?
【发布时间】:2010-11-24 00:43:11
【问题描述】:

我正在构建一个 Visual Studio 2010 插件供我公司内部使用。我想自定义主窗口标题以显示当前启动项目的名称。我可以使用以下代码设置主窗口的标题:

            DTE d = GlobalClass.dte2 as DTE;
        IntPtr hWnd = new System.IntPtr(d.MainWindow.HWnd);


        if (d.Solution.SolutionBuild.StartupProjects != null)
        {
            object[] sStartUpProject = (object[])d.Solution.SolutionBuild.StartupProjects;

            string Caption = d.MainWindow.Caption + "Current Project: " + (string)sStartUpProject[0];

            SendMessage(hWnd, WM_SETTEXT, new IntPtr(0), Caption);
        }

我可以在创建或激活窗口时触发此代码,但如果用户更改解决方案资源管理器(或我的加载项)中的启动项目并且不会移动到另一个窗口视觉工作室。我希望在进行更改后立即更新标题。

【问题讨论】:

  • 你解决了吗?
  • 我没有找到解决方案,但我们大约在这个时候停止了插件的开发。

标签: visual-studio-2010 visual-studio-addins envdte vs-extensibility


【解决方案1】:

是的,您需要订阅IVsMonitorSelection 事件并在OnElementValueChanged() 中处理SEID_StartupProject

看看这段代码,它很不言自明:

https://bitbucket.org/thirteen/switchstartupproject/src/a80f0deb737c/SwitchStartupProject/SwitchStartupProjectPackage.cs

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-28
    • 1970-01-01
    • 2021-05-18
    相关资源
    最近更新 更多