小编Ori*_*meg的帖子

为过时的C#事件构建警告

有没有人知道使用Obsolete事件时Visual Studio C#编译器发出构建警告的技巧或解决方法?

如果我使用公共事件创建一个简单的程序集并将Obsolete属性应用于该事件,当我引用该程序集并在另一个项目中订阅该事件时,编译器在构建时不会发出警告(即使具有最高警告级别)或警告设置为错误).

项目1中的事件声明:

    public class APIClass
    {
        [Obsolete("Obsolete in v2.0")]
        public event EventHandler ObsoleteEvent;
    }
Run Code Online (Sandbox Code Playgroud)

在Project 2中使用Obsolete事件不会导致生成警告:

    private void SubscribeToEvent(APIClass apiClass)
    {
        apiClass.ObsoleteEvent += delegate { };
    }
Run Code Online (Sandbox Code Playgroud)

当我打开源文件时,Visual Studio将该事件识别为Obsolete并将警告(或错误)添加到错误列表: 后台源处理识别警告

但是,一旦我构建,警告就会消失,并且不会出现在构建输出中: 编译后警告消失了

丢失的编译器警告似乎已作为错误提交,但在修复之前,是否有任何可能的方法在有人使用该事件时强制发出警告?否则,无法提醒外部消费者他们需要更改其呼叫代码.

c# api events obsolete

12
推荐指数
1
解决办法
1199
查看次数

标签 统计

api ×1

c# ×1

events ×1

obsolete ×1