【问题标题】:From a visual studio package (VSIX) how do I detect a solution or project build?如何从 Visual Studio 包 (VSIX) 中检测解决方案或项目构建?
【发布时间】:2011-04-27 13:06:10
【问题描述】:

如何从 Visual Studio 包 (VSIX) 检测解决方案或项目构建?

【问题讨论】:

    标签: visual-studio visual-studio-2010 visual-studio-addins vsix


    【解决方案1】:

    如果你的程序集中有一个 Package 类,你可以这样做:

    DTE2 = Package.GetGlobalService(typeof(SDTE)) as DTE2;
    

    然后查看IsOpen属性,看看解决方案是否打开...查看Projects属性找到项目。

    但是,如果您的意思是在打开解决方案时我如何获得事件...那么解决方案,例如:

    public sealed class MyPackage : Package
    {
      private DTE m_dte;
    
      protected override void Initialize()
      {
        IServiceContainer serviceContainer = this as IServiceContainer;
        m_dte = serviceContainer.GetService(typeof(SDTE)) as DTE;
        var m_solutionEvents = m_dte.Events.SolutionEvents;
        m_solutionEvents.Opened += SolutionOpened;
        ...
    
      }
    
      void SolutionOpened()
      {
         .... away you go...
      }
    }
    

    参考:VSIX:获取 DTE 对象参考:http://msdn.microsoft.com/en-us/library/envdte.solution.aspx

    参考:http://msdn.microsoft.com/en-us/library/envdte._solution.projects.aspx

    【讨论】:

    • 在MSDN上看这个页面:msdn.microsoft.com/en-us/library/…;所有事件都标有“基础结构。仅限 Microsoft 内部使用”。这是否意味着它们不应该在 VS 包中使用?
    • 我认为这不能回答 OP 的问题(我也有同样的问题),即如何检测 BUILD 事件?您已经展示了如何检测 SolutionOpened 事件。
    • 如何访问已编译的 dll(项目)?我正在写一个依赖于编译项目的扩展,即扩展会从程序集中读取元数据
    【解决方案2】:

    看看DTE.Events.BuildEvents 有OnBuildBegin 和OnBuildDone 的事件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-05-29
      • 2021-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多