【问题标题】:Hook to see when a VS web application finishes starting挂钩以查看 VS Web 应用程序何时完成启动
【发布时间】:2014-10-01 13:59:01
【问题描述】:

我正在编写一个 Visual Studio 扩展(a VS Package),我正在尝试测量从用户单击启动 Web 应用程序到在 Web 浏览器中打开新选项卡的时间,它是可以使用了。

理想情况下,我想测量同时启动 Web 应用程序的启动时间:

  • 调试 → 开始调试 (F5)
  • 调试 → 不调试就开始 (Ctrl+F5)

使用IVsUpdateSolutionEvents4我可以看到用户何时开始和结束:

  • 构建解决方案 (SBF_OPERATION_BUILD)
  • 重建解决方案 (SBF_OPERATION_BUILD | SBF_OPERATION_FORCE_UPDATE)
  • 清洁解决方案 (SBF_OPERATION_CLEAN)

使用IVsDebuggerEvents.OnModeChange 我可以看到:

  • 用户点击调试→开始调试 (DBGMODE_Run)
  • 用户点击停止调试 (DBGMODE_Design)

但是,我还没有找到一个很好的钩子来查看应用程序何时完成启动。有什么想法吗?

【问题讨论】:

    标签: visual-studio vspackage visual-studio-sdk


    【解决方案1】:

    我不希望有“魔术钩”可用。如果是 Web 应用程序,我认为 VS 就是这样做的:

    • 用户点击“调试”
    • VS 将包部署到临时位置
    • VS 创建一个WebBrowserInterface
    • VS 将 URL 发送到浏览器并触发导航

    在这一点上,VS 已经基本完成了它的工作,但还有很多事情要做。

    • 浏览器将请求发送到网络服务器
    • Web 服务器加载应用程序
    • Web 服务器将响应发送到浏览器。

    因此,浏览器知道用户可以开始使用应用程序,并且他必须负责触发您正在寻找的事件。

    这很难得到,因为程序员可以选择 Chrome、Safari、Firefox 等作为默认浏览器。

    我的意见是,您需要监控 IIS 活动并检测启动新 Web 应用时发生的模式。

    【讨论】:

    • 我想了很多,但谢谢!你的答案列出所有概念性步骤的方式教会了我很多东西。也许我需要做的就是弄清楚项目将启动哪个 URL,然后监视该 URL 的 IISExpress 日志。
    • 您知道如何查看 VS 何时将 URL 发送到浏览器以及它发送的 URL 是什么?
    • 很遗憾没有。但是如果你记录你点击debug的时间,然后分析IISExpress的日志,有99%的几率在“debug hit time”之后的第一个请求中包含你想要的url。
    • 我还发现了这个界面,在部署完成后可能会对您有所帮助:msdn.microsoft.com/en-us/vstudio/…
    • 关于日志的要点。感谢提供界面链接,应该很有用。
    猜你喜欢
    • 1970-01-01
    • 2019-03-16
    • 2019-12-17
    • 2011-01-27
    • 2023-01-20
    • 2011-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多