Visual studio 如何在VS.NET扩展包中注册IVsEditorFactoryNotify?

Visual studio 如何在VS.NET扩展包中注册IVsEditorFactoryNotify?,visual-studio,Visual Studio,我正在尝试监视项目添加事件 我已经创建了一个自定义编辑器工厂,例如 public class ProjectEditorFactory : IVsEditorFactoryNotify, IVsEditorFactory { public int NotifyDependentItemSaved(IVsHierarchy pHier, uint itemidParent, string pszMkDocumentParent, uint itemidDpendent, string ps

我正在尝试监视项目添加事件

我已经创建了一个自定义编辑器工厂,例如

public class ProjectEditorFactory : IVsEditorFactoryNotify, IVsEditorFactory
{
    public int NotifyDependentItemSaved(IVsHierarchy pHier, uint itemidParent, string pszMkDocumentParent, uint itemidDpendent, string pszMkDocumentDependent)
    {
        return VSConstants.S_OK;
    }

    public int NotifyItemAdded(uint grfEFN, IVsHierarchy pHier, uint itemid, string pszMkDocument)
    {
        return VSConstants.S_OK;
    }

    public int NotifyItemRenamed(IVsHierarchy pHier, uint itemid, string pszMkDocumentOld, string pszMkDocumentNew)
    {
        return VSConstants.S_OK;
    }

............
}
然后在包的初始化方法中

我知道

但在我运行之后,在我向项目添加新项之后,事件处理程序不会被命中

有人知道如何观看比赛吗

我真正想要的是在语法上添加几个文件,然后创建对一个特定文件的依赖关系。除了收听ItemAdded事件,有人知道其他方式吗


谢谢

这里不需要编辑器工厂,这时您需要提供自定义编辑器(如Visual Studio中的文本编辑器)。您应该考虑与项目系统集成。我不记得通过较新的项目系统来做这件事的方法,但是你可能会侥幸逃脱

对不起,我太笨了,不能这么做。那么,你是说如果我想在添加项(文件)时通知我的VS.NET扩展名(包),我的包应该实现IVsHierarchyEvents接口吗?我刚刚尝试过,事件仍然没有命中。不,您需要获取IVsHierarchy,然后在其上调用advisionHierarchyEvents方法并传递IVsHierarchyEvents的实现。看看这本书,它向你展示了如何抓住一个项目。一旦你有了这些,打电话接收感兴趣的事件。
RegisterEditorFactory( new ProjectEditorFactory());