如何在 ReSharper 扩展中获得构建的结果

Posted

技术标签:

【中文标题】如何在 ReSharper 扩展中获得构建的结果【英文标题】:How can I get the outcome of a Build in a ReSharper Extension 【发布时间】:2016-01-01 14:51:34 【问题描述】:

我想编写一个 ReSharper 扩展,在每次构建后执行一个操作, 所以我想我需要首先知道构建何时完成以及 了解构建是否成功

关于如何做到这一点的任何提示?

(我对扩展完全陌生) 提前致谢

【问题讨论】:

【参考方案1】:

您可以为此使用 Visual Studio 自己的事件。获取DTE 对象的实例并订阅OnBuildBeginOnBuildDone 事件。

您可以在 Clippy ReSharper 扩展中看到这一点。它subscribes to the events,并从the call to Shell.Instance.GetComponent<DTE>() 获取DTE 实例。

请注意,如何引用 DTE 类型非常重要 - 它是一个 COM 引用,不应作为 Embedded PIA 介绍类型引用,否则 ReSharper 的组件模型容器会将其视为与 @ 不同的类型它知道的 987654330@ 实例。相反,只需将其引用为non-PIA type:

<Reference Include="envdte, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
  <SpecificVersion>False</SpecificVersion>
  <EmbedInteropTypes>False</EmbedInteropTypes>
  <HintPath>..\..\lib\envdte.dll</HintPath>
</Reference>

【讨论】:

谢谢,我会研究一下,不过我希望能更简单一些。

以上是关于如何在 ReSharper 扩展中获得构建的结果的主要内容,如果未能解决你的问题,请参考以下文章

如何为 ReSharper 扩展找到正确版本的“Wave”?

码住!Visual Studio扩展工具ReSharper安装指南来了

VS2017安装ReSharper

是否可以使用 ReSharper 创建扩展方法?

Resharper 运行配置

扩展 ReSharper 的单元测试会话窗口