none
VS插件开发中如何获取用户运行开始事件和结束事件,并获取是运行哪个项目和运行方式? RRS feed

  • 问题

  • 请问在VS package 开发中,如何获取运行开始和结束事件

    我翻阅了大量api也没有发现。

    大致是,我没有任何断点,我需要获取用户按下F5或者右键选择项目启动新实例,或者直接使用附加到其他进程的方式开始运行程序。

    怎样可以捕获到这个事件?并区分是哪个项目作为启动项(因为一个解决方案可以有多个可启动项目,F5方式可以获取当前设置为启动项目的项目,但是右键方式就不行),并获取到是通过F5或者是右键启动的。

    还有用户停止运行得时间又怎么捕获?

    IVsDebuggerEvents 只会在进入断点时才会执行,意识就是我必须要有断点

    IVsUpdateSolutionEvents2 或者是 build事件都只能在编译生成时才会触发开始

    但是如果经过编译后,直接F5启动是不会重新编译程序的

    请问该怎么获取到我需要的事件或者服务?

    谢谢

    2016年11月23日 3:05

答案

全部回复

  • 请问在VS package 开发中,如何获取运行开始和结束事件

    我翻阅了大量api也没有发现。

    大致是,我没有任何断点,我需要获取用户按下F5或者右键选择项目启动新实例,或者直接使用附加到其他进程的方式开始运行程序。

    怎样可以捕获到这个事件?并区分是哪个项目作为启动项(因为一个解决方案可以有多个可启动项目,F5方式可以获取当前设置为启动项目的项目,但是右键方式就不行),并获取到是通过F5或者是右键启动的。

    还有用户停止运行得时间又怎么捕获?

    IVsDebuggerEvents 只会在进入断点时才会执行,意识就是我必须要有断点

    IVsUpdateSolutionEvents2 或者是 build事件都只能在编译生成时才会触发开始

    但是如果经过编译后,直接F5启动是不会重新编译程序的

    请问该怎么获取到我需要的事件或者服务?

    谢谢

    2016年11月20日 2:22
  • 看这个文档 https://msdn.microsoft.com/en-us/library/bb161367.aspx

    attach , 开始运行, 停止运行他都有说明哪些信号事件会触发


    Bob Bao

    2016年11月23日 3:34
  • 你好,

    你可以参考 创建自定义调试引擎 里面的相关事件 (调用调试器事件终止和分离)。

    https://msdn.microsoft.com/zh-cn/library/bb145934.aspx

    希望对你有帮助。

    Best regards,

    Cole Wu


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    • 已标记为答案 libra0907 2016年11月24日 2:14
    2016年11月23日 10:14
  • 应该是我要找的API,非常感谢,有时间我去试下。

    谢谢

    另外,麻烦问下在插件开发的时候

    app.config配置文件怎样使用喃?

    我添加了app.config,但是发现并没有编译到vsix文件里面,并且我调试并没有使用这个app.config文件配置

    2016年11月24日 1:57
  • vsix 对于Configuration Setting是只读的

    你可以用 VS UserSetting 来存储些小型数据,参考这个 https://msdn.microsoft.com/en-us/library/ff460144.aspx


    Bob Bao

    2016年11月24日 2:19
  • 非常感谢,我看了这个API

    这个API基本上是自己建立一个调试引擎(DE)

    通过DE发送时间到SDM  

    是可以实现我的需求,但是太过于复杂

    我想要的是我可以获取到程序开始启动了,是由SDM用事件通知我,告诉我,程序开始启动。

    而不是我自己创建一个DE,告诉SDM,程序准备好了可以开始附加了。

    非常感谢。

    2016年11月26日 5:53
  • 非常感谢,我看了这个API

    这个API基本上是自己建立一个调试引擎(DE)

    通过DE发送时间到SDM  

    是可以实现我的需求,但是太过于复杂

    我想要的是我可以获取到程序开始启动了,是由SDM用事件通知我,告诉我,程序开始启动。

    而不是我自己创建一个DE,告诉SDM,程序准备好了可以开始附加了。

    非常感谢。

    2016年11月26日 5:53