3

自定义编译器警告
C#:如果在源代码中使用某些方法
没有帮助,则在 Visual Studio 中创建自定义警告,因为它们处理的是作者控制的代码。

我们在我们的软件中使用了第 3 方的 UI 控件套件(DevExpress),我想在有人使用MessageBox.Show("blah");而不是XtraMessageBox.Show("blah");

有没有办法做到这一点?

4

3 回答 3

5

这类事情可以通过 FxCop/Visual Studio 代码分析的自定义规则相对容易地解决。如果您使用的是 Visual Studio Developer Edition,您甚至会在 IDE 中看到与编译警告和错误一起显示的规则失败。

于 2009-10-13T14:43:17.340 回答
2

虽然您无法在 .NET 中实现真正的自定义编译时错误,但有许多第三方工具(免费和商业)可以将其验证逻辑注入构建过程,通常是在编译之后。

以下是我知道的三种解决您问题的方法:

  1. Resharper 5.0 ($) 将支持自定义规则/警告。
  2. PostSharp(免费)中,您可以定义OnMethodBoundary方面,覆盖其CompileTimeValidate方法并从中发出 [post] 编译时错误。
  3. NDepend可以与您的构建过程 ($) 集成以执行类似的编码策略
于 2009-10-13T14:31:39.313 回答
1

不,没有直接的方法。如果您考虑一下,您正在寻找一些您甚至没有编译的代码的编译器警告。

如果你真的想要这个,你可以在你编译的程序集上使用反射方法来检查是否调用了你不想要的任何方法/程序集。Cecil有很多你需要的功能。然后,您可以将这部分作为构建过程的一部分。

于 2009-10-13T14:19:22.587 回答