如何在Visual Studio 2017 sdk中拦截项目保存事件?

Edu*_*sio 2 visual-studio-sdk visual-studio-extensions visual-studio-2017

是否可以在 Visual Studio 2017 sdk 中拦截项目保存事件?

更新

我目前正在开发 Visual Studio 2017 的扩展,我需要知道何时保留任何更改。

例如:当我在项目中添加新引用时(我知道添加/更改/删除引用但不满足我的需要时会发生事件),该项目被标记为待保存。我需要在保存时拦截它(如果在保存之前拦截就更好了)。

我尝试了该Dte.Events.DocumentEvents.DocumentSaved事件,但在保存项目中没有触发;DTE.Events.SolutionEventsDTE.Events.SolutionItemEvents没有我需要的类型的事件。

有可能的?

Edu*_*sio 5

在这种情况下,正确的方法是使用实​​现IVsRunningDocTableEvents3重写该OnBeforeSave方法。

通过这种方式,我可以准确地知道何时保存项目并执行其需要的操作。

前任。:

uint cookie;
var runningDocumentTable = (IVsRunningDocumentTable)GetGlobalService(typeof(SVsRunningDocumentTable));

runningDocumentTable.AdviseRunningDocTableEvents(new RunningDocTableEventsHandler(), out cookie);
Run Code Online (Sandbox Code Playgroud)
uint cookie;
var runningDocumentTable = (IVsRunningDocumentTable)GetGlobalService(typeof(SVsRunningDocumentTable));

runningDocumentTable.AdviseRunningDocTableEvents(new RunningDocTableEventsHandler(), out cookie);
Run Code Online (Sandbox Code Playgroud)