【问题标题】:Load Visual Studio 2019 Extension on Startup在启动时加载 Visual Studio 2019 扩展
【发布时间】:2021-04-29 13:24:05
【问题描述】:

我需要测量我在中断模式下调试我的项目所花费的时间。 所以我想出了编写一个自定义 VS 扩展的想法,该扩展绑定到 OnEnterBreakModeOnEnterRunMode 调试事件。

这很好用,但我需要确保我的扩展在 VS 启动时正确加载。 否则,我在调试时可能无法加载扩展。

不幸的是,Visual Studio 2019 强烈要求用户使用 AsyncPackage 基类和 设置 BackgroundLoadingFlag。默认情况下,VS 会停用使用已弃用 API 的扩展, 这允许在启动时同步加载扩展。

对于如何确保我的扩展程序在我加载时已加载,您有任何提示或解决方法吗? 开始调试?

【问题讨论】:

    标签: c# visual-studio-2019 visual-studio-extensions


    【解决方案1】:

    所以将你的包设置为在KnownUIContexts.DebuggingContext 被激活时自动加载,这意味着你的包应该在调试开始后加载——如果没有人在该会话中调试任何东西,你就没有理由在启动时加载。一旦你的包加载,订阅这些事件,但检查当前状态,看看你是否已经进入中断模式并错过了初始事件。与其尝试“总是在第一个事件之前加载”,不如订阅事件并检查相应的属性以查看您是否已经处于该状态。

    (为什么我们不允许您在启动时同步加载?因为每个人都这样做是因为它很容易,而且您的 Visual Studio 需要很长时间才能加载。)

    【讨论】:

    • 我只想在激活 DebuggingContext 时加载我的扩展,但这会导致丢失初始事件。
    • 绝对有必要不要错过任何 OnEnterBreakMode 事件。我理解不允许同步加载背后的原因,但我的扩展应该只测量在中断模式下花费的时间并将测量的时间写入内存。因此它相当轻巧。
    • 请注意,调试上下文将在调试会话开始时触发,因此我认为您不太可能在这里错过任何内容。
    • 我在开始调试时异步加载时总是错过第一个事件。
    猜你喜欢
    • 1970-01-01
    • 2022-01-02
    • 1970-01-01
    • 1970-01-01
    • 2022-06-21
    • 2022-01-27
    • 2020-02-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多