Кто-нибудь знает о трюке или обходном пути, чтобы заставить компилятор Visual Studio С# выдавать предупреждения сборки при использовании устаревшего события?
Если я создаю простую сборку с открытым событием и применяю атрибут Obsolete к событию, когда я ссылаюсь на эту сборку и подписываюсь на событие в другом проекте, компилятор не выдает предупреждение при создании (даже с высокий уровень предупреждения или предупреждения, установленные для ошибок).
Объявление события в проекте 1:
public class APIClass
{
[Obsolete("Obsolete in v2.0")]
public event EventHandler ObsoleteEvent;
}
Использование устаревшего события в Project 2 не вызывает предупреждения сборки:
private void SubscribeToEvent(APIClass apiClass)
{
apiClass.ObsoleteEvent += delegate { };
}
Когда я открываю исходный файл, Visual Studio распознает событие как устаревшее и добавляет предупреждение (или ошибку) в список ошибок:
Однако, как только я построю, предупреждение исчезнет и не появится в выводе сборки:
Недопустимое предупреждение о компиляторе, похоже, было зарегистрировано как ошибка, но до тех пор, пока оно не будет исправлено, существует ли какой-либо возможный способ заставить предупреждение когда кто-то использует это событие? В противном случае нет способа предупредить внешних потребителей, что им необходимо изменить код вызова.