我想知道是否可以从扩展中拦截或禁用不同的Visual Studio命令或功能?
例如,您是否可以阻止用户访问文件 - >打开命令?我正在努力开发一个有助于实施某些编码标准的扩展,作为其中的一部分,我想在用户尝试执行这些操作时禁用或拦截一些不同的内容。例如,可能会禁用编辑项目属性或类似内容的功能,以阻止用户检查其本地更改并破坏构建或弄乱其他团队成员。
在Extension API中是否存在钩子,或者我们是否坚持使用旧的Word文档让人们玩得很好?
答案 0 :(得分:2)
你可以,但我想在提供详细信息之前回应Greg的评论:你最好花时间制作一个真正令人敬畏的工具,开发人员可以运行来捕捉“坏问题”,而不是玩弄w鼹鼠来禁用命令。禁用命令可能很危险,因为通常有多个命令可能会执行相同的“坏”操作。此外,禁用可能会导致VS的其他部分不稳定。使用项目属性的示例,编写一个在代码库中运行的工具,并查找“坏”的项目文件,并发出构建警告。每次开发人员进行构建时都会运行此命令。这样他们仍然可以获得近乎实时的反馈,而无需确保他们安装了扩展程序。 (另外,您可以将该工具检入您的代码库以确保每个人都已同步)
也就是说,实施IVsRegisterPriorityCommandTarget可能是正确的选择。性能影响可能很大,因此您需要以确保您的实施速度很快,否则您将放慢VS.如果从处理程序返回E_NOTSUPPORTED,将导致正常路由。返回S_OK但不转发会阻止路由发生。