【问题标题】:How to get notified when a Visual Studio project is renamed (VSIX)?如何在重命名 Visual Studio 项目 (VSIX) 时收到通知?
【发布时间】:2020-10-16 07:54:17
【问题描述】:

我正在构建一个 Visual Studio 扩展,我需要在项目重命名时收到通知。

尝试使用DTE2.Events2.SolutionEvents,也尝试使用IVsSolutionEvents

它们都适用于 C#、VB.NET 和 F# 项目,但不适用于 C++ 项目。

还有其他方法来处理项目重命名事件吗?还是针对 C++ 项目的特定内容?

谢谢。

【问题讨论】:

    标签: c# c++ visual-studio vsix envdte


    【解决方案1】:

    你看过IVsSolutionEvents4接口和它的OnAfterRenameProject方法吗?

    对于implementation,您可以查看我的DulcisX 框架。

    【讨论】:

    • 我尝试使用 IVsSolutionEvents4。由于某种原因,它仅适用于 C#、VB 和 F#。但它不适用于 C++ 项目。 C++ 项目不会触发该事件。
    • Tbf 我从未在 C++ 项目中真正尝试过它。这里最大的问题是所有“项目类型”都有自己的实现。我能想到的唯一另一件事是IVsRunningDocTableEvents3OnAfterAttributeChange 方法。您还需要使用继承上述接口的类调用IVsRunningDocumentTable.AdviseRunningDocTableEvents 方法。
    • @omsharp 如果grfAttribs 参数等于4pszMkDocumentOld != pszMkDocumentNew 某些东西被重命名。 RDT 应该跟踪解决方案中的各种可编辑文件。可以在here 找到一个实现。
    • 但这是针对文档(文件),而不是项目!
    • @omsharp 它仍然会触发项目/解决方案,至少对于 C# 而言。
    猜你喜欢
    • 1970-01-01
    • 2017-08-25
    • 2018-12-02
    • 2011-12-23
    • 2011-04-22
    • 1970-01-01
    • 1970-01-01
    • 2011-07-15
    • 1970-01-01
    相关资源
    最近更新 更多