【问题标题】:Disabling features of Visual Studio from an extension从扩展中禁用 Visual Studio 的功能
【发布时间】:2012-11-30 13:53:18
【问题描述】:

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

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

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

【问题讨论】:

  • 这种东西放在源代码控制系统的入口不是更好吗?如果您的团队成员之一不使用 Visual Studio,该怎么办?
  • 因此,Visual Studio 的标签。就这一点而言,我们是一家非常同质的开发商店。我认为代码质量绝对应该是一种多管齐下的方法。我们已经进行了代码审查等等。我们只是想在流程的早期捕获这些,我不太关心禁用,更关心的是能够拦截操作并向开发人员提供一些关于标准的不显眼的提醒和资源。

标签: visual-studio visual-studio-2012 visual-studio-extensions


【解决方案1】:

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

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

【讨论】:

  • 感谢您的回复。我确实了解这里的一些缺点,并且我们确实在我们的 CI 构建中使用了 StyleCop 等工具和其他流程。项目属性只是我脑海中的一个例子。我们最初的想法是基本上有一个“标准”窗格,它可以根据我们看到开发人员不断遇到问题的几个不同场景提供一些上下文相关信息。也许整合一点 Clippy 动作。 “我看到你正在尝试编码......你需要一些帮助吗?”
猜你喜欢
  • 2015-11-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-30
  • 2013-07-25
  • 2016-12-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多