1

我想知道是否可以从扩展中拦截或禁用不同的 Visual Studio 命令或功能?

例如,你能阻止用户访问 File -> Open 命令吗?我正在尝试开发一个有助于强制执行一些编码标准的扩展,作为其中的一部分,我想在用户尝试执行它们时禁用或拦截一些不同的事情。例如,可能会禁用编辑项目属性的功能或类似的功能,以阻止用户签入他们的本地更改并破坏构建或弄乱其他团队成员。

Extension API 中是否存在对此的挂钩,或者我们是否坚持使用旧的 Word 文档要求人们玩得好?

4

1 回答 1

2

你可以,但在我提供细节之前,我确实想回应 Greg 的评论:你最好花时间制作一个非常棒的工具,开发人员可以运行它来捕捉“坏问题”,而不是玩打地鼠来禁用命令。禁用命令可能很危险,因为通常有多个命令可能会做同样的“坏”事情。此外,禁用可能会导致 VS 的其他部分不稳定。使用您的项目属性示例,编写一个在您的代码库中运行的工具,并查找“坏”的项目文件,并发出构建警告。每次您的开发人员进行构建时都运行此程序。这样他们仍然可以获得近乎实时的反馈,而不必确保他们安装了扩展。(另外,您可以将该工具检查到您的代码库中以确保每个人都同步)

也就是说,在这里实现IVsRegisterPriorityCommandTarget可能是正确的选择。性能影响可能很大,因此您需要确保您的实现速度很快,否则您会减慢 VS。如果您从处理程序返回 E_NOTSUPPORTED,这将导致正常路由。返回 S_OK 但不转发将阻止路由发生。

于 2012-12-12T21:49:30.897 回答