首页 > 解决方案 > vsct 监听 ProjectItemsEvents.ItemAdded 没有捕捉到任何东西

问题描述

VS2019 16.5.0 预览1

当项目添加、删除或重命名项目时,我试图捕捉事件。

当解决方案打开和关闭,或者添加或删除项目时,我正在捕捉,但在将单个文件添加到项目时我没有捕捉到。

public DTE2 _dte2;
private Events2 _events2;
private SolutionEvents _SolutionEvents;
private ProjectItemsEvents _ProjectItemsEvents;

public MyProject()
{
    _dte2 = Package.GetGlobalService(typeof(EnvDTE.DTE)) as DTE2;

    _dte2.Events.SolutionEvents.AfterClosing += SolutionEvents_AfterClosing;
    _dte2.Events.SolutionEvents.Opened += SolutionEvents_Opened;
    _dte2.Events.SolutionEvents.ProjectAdded += SolutionEvents_ProjectAdded;
    _dte2.Events.SolutionEvents.ProjectRemoved += SolutionEvents_ProjectRemoved;
    _dte2.Events.SolutionEvents.BeforeClosing += SolutionEvents_SolutionBeforeClosing;
    _dte2.Events.SolutionEvents.ProjectRenamed += SolutionEvents_ProjectRenamed;

    _events2 = (Events2)_dte.Events;
    _ProjectItemsEvents = _events2.ProjectItemsEvents;

    _events2.ProjectItemsEvents.ItemAdded += ItemAddedHandler;
    _events2.ProjectItemsEvents.ItemRemoved += ItemRemovedHandler;
    _events2.ProjectItemsEvents.ItemRenamed += ItemRenamedHandler;
}

private void ItemAddedHandler(ProjectItem projectItem) 
{
} <- breakpoint here

private void ItemRemovedHandler(ProjectItem projectItem)
{
} <- breakpoint here

private void ItemRenamedHandler(ProjectItem projectItem, string oldName)
{
} <- breakpoint here

在 ItemAddedHandler、ItemRemovedHandler 或 ItemRenamedHandler 上放置断点根本没有任何效果。当扩展在实验实例中运行时,当我从项目中添加、重命名或删除文件时,这些方法永远不会被调用。

我发现引用了其他有类似问题的人,但这些都与垃圾收集有关,我不相信这是我的问题,因为我有对 events2 和 projectItemsEvents 的引用。

标签: c#visual-studiovisual-studio-extensionsvsct

解决方案


推荐阅读