【问题标题】:How to throw compilation error from an attribute?如何从属性中抛出编译错误?
【发布时间】:2009-09-15 16:15:38
【问题描述】:

.NET 中有 attributes(例如 ObsoleteAttribute),它们能够根据配置阻止编译或至少抛出编译时警告。

如何编写能够干扰编译的属性?有没有办法从 Microsoft 外部执行此操作?

【问题讨论】:

标签: c# .net attributes


【解决方案1】:

Obsolete 属性是“编译器魔法”——如果不修改编译器,你不能自己做这样的事情。但是,与往常一样,有一些解决方法 - 例如看看thisthis 线程。

【讨论】:

    【解决方案2】:

    【讨论】:

      【解决方案3】:

      在编译器中表现出这一点的任何属性都是特殊情况。例如,[Obsolete] 行为在 C# 规范 (17.4.3) 中进行了描述。

      你可以write a custom FxCop rule

      【讨论】:

      • 这不会让你有机会给你一个编译时错误/警告,是吗?
      • 如果您在构建过程中包含 FxCop,则可以。在 VS2008(团队开发者版)中,您可以通过声明构建符号或单击项目属性上的复选框来执行此操作...
      • 有关信息,它是 CODE_ANALYSIS 符号,或“代码分析”选项卡上的复选框。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多