启动时在 Visual Studio 中自动 运行 扩展代码
Automatically run extension code in Visual Studio on startup
我可以在用户打开 Visual Studio IDE 后立即在后台为 Visual Studio 创建 运行 的扩展吗?例如,我正在构建一个扩展,它在 Visual Studio 中获取当前活动文件地址(使用 C#),但我希望此扩展始终在后台 运行 而不必由用户激活单击按钮或按某些组合键。
这可能吗?如果可能,最好的方法是什么?
如有任何帮助,我们将不胜感激!此致,二凡
既然你用 visual-studio-2010
标记了你的问题,我假设你正在处理 "Add-in" 而不是 "VSPackage Extensions"。
在这种情况下,您可以使用 OnConnection
事件处理程序。
如果您正在处理 VSPackage 扩展,则可以使用属性 ProvideAutoLoad
。
只需搜索这些,您就会找到足够的信息。这两种方式也有简短的描述 here under "How can I run my add-in code in a VSPackage?"
对于 VS 2010 及更高版本,推荐的扩展方法是包(VS 2015 不允许加载项)。
要在加载 Visual Studio 时加载包,请参阅 HOWTO: Autoload a Visual Studio package。
加载后,您的包可能会对两种不同类型的选择更改事件感兴趣:
- 要在解决方案资源管理器中的选择发生更改时收到通知,请获取 IVsMonitorSelection interface and call the AdviseSelectionEvents/UnadviseSelectionEvents and provide a class that implements the IVsSelectionEvents 界面。
- 要在活动 window 更改时得到通知(可以是文档 window 或工具 window),请实施 IVsWindowFrameNotify 接口。
对于扩展,将以下属性添加到包 class,这将在解决方案未在 visual studio 中打开时加载扩展。我已经用 VS 2015 和 2017 对此进行了测试。
[ProvideAutoLoad(UIContextGuids80.NoSolution)]
我可以在用户打开 Visual Studio IDE 后立即在后台为 Visual Studio 创建 运行 的扩展吗?例如,我正在构建一个扩展,它在 Visual Studio 中获取当前活动文件地址(使用 C#),但我希望此扩展始终在后台 运行 而不必由用户激活单击按钮或按某些组合键。
这可能吗?如果可能,最好的方法是什么?
如有任何帮助,我们将不胜感激!此致,二凡
既然你用 visual-studio-2010
标记了你的问题,我假设你正在处理 "Add-in" 而不是 "VSPackage Extensions"。
在这种情况下,您可以使用 OnConnection
事件处理程序。
如果您正在处理 VSPackage 扩展,则可以使用属性 ProvideAutoLoad
。
只需搜索这些,您就会找到足够的信息。这两种方式也有简短的描述 here under "How can I run my add-in code in a VSPackage?"
对于 VS 2010 及更高版本,推荐的扩展方法是包(VS 2015 不允许加载项)。
要在加载 Visual Studio 时加载包,请参阅 HOWTO: Autoload a Visual Studio package。
加载后,您的包可能会对两种不同类型的选择更改事件感兴趣:
- 要在解决方案资源管理器中的选择发生更改时收到通知,请获取 IVsMonitorSelection interface and call the AdviseSelectionEvents/UnadviseSelectionEvents and provide a class that implements the IVsSelectionEvents 界面。
- 要在活动 window 更改时得到通知(可以是文档 window 或工具 window),请实施 IVsWindowFrameNotify 接口。
对于扩展,将以下属性添加到包 class,这将在解决方案未在 visual studio 中打开时加载扩展。我已经用 VS 2015 和 2017 对此进行了测试。
[ProvideAutoLoad(UIContextGuids80.NoSolution)]