如何从属性中抛出编译错误?

.NET中有属性 (例如ObsoleteAttribute ),它们能够阻止编译或至少抛出编译时警告,具体取决于它们的配置。

如何编写一个能够干扰编译的属性? 有没有办法从微软以外的地方做到这一点?

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

使用PostSharp: 生成自定义编译时警告C#

在编译器中展示此内容的任何属性都是特殊情况。 例如, [Obsolete]行为在C#规范(17.4.3)中描述。

你可以写一个自定义的FxCop规则吗?