防止导入命名空间

Prevent Importing a namespace

有没有办法在尝试导入命名空间时强制发出编译器警告?

例如,该项目可能需要对 System.Data 的引用,但我们希望阻止该项目中的任何 class 或模块导入 System.Data.OleDb 而不是建议切换到自定义数据访问库。

我的猜测是可以使用像 Roslyn 这样的自定义编译器工具,但似乎在 Visual Studio

中应该可行

ReSharper 允许设置自定义规则和验证。在 Options->Code Inspection->Custom Patterns 下,您可以创建自定义验证模式。

Select Add pattern 并使用 forbidden 命名空间作为搜索模式(例如 System.Data.OleDb)并将您的替换放在替换模式中(例如 Custom.Optimized.OleDb)。然后您可以设置严重性,ReSharper 会建议更改。

显然,这只有在您和您的团队使用 ReSharper 时才有效。 (如果不是你真的应该)

更新:评论中问题的回答:你知道Resharper是如何管理整个开发团队的规则的吗

Resharper 使用 3 级设置:

  1. 个人设置:这些设置与您的用户帐户绑定。使用您的用户帐户(Windows 用户帐户)
  2. 时,这些设置适用于所有解决方案
  3. 解决方案设置:这些设置保存在本地并应用于一个特定的解决方案
  4. 团队共享:这些设置应用于一个解决方案,但存储在您签入的配置文件中,使其可供整个团队使用。

使用设置级别团队共享,您可以与整个团队共享一个通用配置文件。

除此之外,Resharper 提供了一个免费的命令行工具,您可以将其集成到构建服务器上,以在自动构建中强制执行这些规则。