Visual Studio可扩展性:拦截文件粘贴事件

时间:2013-03-14 10:20:18

标签: visual-studio-2010 visual-studio-extensions

如何拦截Visual Studio扩展中的文件粘贴事件?
文件粘贴=在解决方案资源管理器中粘贴整个文件。

我的目标是将某些替换应用于复制的文件。

1 个答案:

答案 0 :(得分:1)

可以使用DTE.Events.CommandEventsMSDNtypeof(VSConstants.VSStd97CmdID).GUID作为命令guid和VSConstants.VSStd97CmdID.Paste作为命令ID拦截它。

示例:

protected override void Initialize() {
    var dte = (DTE)GetService(typeof(DTE));

    var pasteGuid = typeof(VSConstants.VSStd97CmdID).GUID.ToString("B");
    var pasteID = (int)VSConstants.VSStd97CmdID.Paste;

    _pasteEvent = dte.Events.CommandEvents[pasteGuid, pasteID];
    _pasteEvent.BeforeExecute += delegate { Trace.WriteLine("Before paste."); };
    _pasteEvent.AfterExecute += delegate { Trace.WriteLine("After paste."); };
}

这不是很完美,因为它可能会在其他环境中拦截粘贴,但这是一个很好的第一步。也可以在粘贴期间观看ItemAdded事件以获取粘贴的项目。