VSIX 检测到已创建解决方案

VSIX Detect that a solution has been created

虽然 Microsoft 使 "reasonably easy" 确定解决方案何时在 VSIX 扩展程序中打开或关闭

  IVsSolution.GetSolutionInfo(
out pbstrSolutionDirectory, 
out pbstrSolutionFile, 
out pbstrUserOptsFile);

我很困惑我如何在 VSIX 扩展中准确地获取有关何时 创建 的信息/事件。这样的事情可能吗?

我假设一定有某种方法可以做到这一点,但由于 Microsoft 扩展文档很少,我找不到它。

使用IVsSolutionEvents.OnAfterOpenSolution(Object, Int32) 方法,其第二个参数fNewSolution 是您想要的:如果正在创建解决方案则为true。如果解决方案是先前创建的或正在加载,则为 false。

您使用 IVsSolution.AdviseSolutionEvents(IVsSolutionEvents, UInt32) / IVsSolution.UnadviseSolutionEvents(UInt32) 方法获得 IVsSolutionEvents

我前段时间创建了一个工作 VSIX 示例 HOWTO: Get solution events from a Visual Studio package