Директивы препроцессора и ненужные директивы Using

У меня есть код, который мне нужно только запустить в развернутой среде (этап / тест / производство).

Код генерирует некоторые использования других пространств имен, которые появляются в верхней части файла .cs.

Однако, когда я помещаю этот код в директиву препроцессора #IF !DEBUG, использование в верхней части .cs файла теперь утверждает

Использование директивы не требуется.

Это опасно. Поскольку это проект для нескольких человек, я опасаюсь, что кто-то в какой-то момент войдет в этот файл и просто автоматически удалит использованные значения, поскольку они помечены как ненужные.

Мое текущее решение - просто прокомментировать код в верхней части файла, чтобы не удалять их.

Итак, как я могу сделать ненужными свои ненужные директивы использования?


person Jens Bergvall    schedule 29.08.2019    source источник
comment
Вы используете директивы также в #IF! DEBUG   -  person Murray Foxcroft    schedule 29.08.2019
comment
Вы используете директивы также в #IF! DEBUG   -  person Murray Foxcroft    schedule 29.08.2019
comment
@MurrayFoxcroft нет, это что? Я не знал, что это была вещь.   -  person Jens Bergvall    schedule 29.08.2019
comment
Я не тестировал, но должно быть. Это работает?   -  person Murray Foxcroft    schedule 29.08.2019
comment
Либо полностью определите типы, используемые в разделе ifdef, либо поместите директивы using внутри # ifdef.   -  person Lasse V. Karlsen    schedule 29.08.2019
comment
@ LasseVågsætherKarlsen Да, полное определение типов решает проблему. Я, наверное, этим воспользуюсь.   -  person Jens Bergvall    schedule 29.08.2019
comment
Однако обычно лучше справляться с такими вещами, используя флаги функций или флаги среды. Инъекционные услуги и др.   -  person Lasse V. Karlsen    schedule 29.08.2019
comment
@MurrayFoxcroft Это вещь, и она работает.   -  person Jens Bergvall    schedule 29.08.2019


Ответы (1)


Поместите также свои usings #IF:

#IF !DEBUG
using MySpecialStuff 
#endif

public class MyClass
{
    static void Main()
    {
#IF !DEBUG
        var msc = new MySpecialClass(); 
#endif
    }   
}

Или полностью укажите нужный класс в объявлении.

public class MyClass
{
    static void Main()
    {
#IF !DEBUG
        var msc = new MySpecialStuff.MySpecialClass(); 
#endif
    }   
}
person Murray Foxcroft    schedule 29.08.2019