Как создать условную директиву в .net на основе библиотек или пакетов, включенных в проект? - PullRequest
0 голосов
/ 02 февраля 2019

Я пытаюсь создать повторно используемые методы расширения для класса Startup для ядра asp.net.

Одна вещь, которую я хотел бы сделать, это добавить все различные варианты использованияна основе значений true / false.

Один из примеров - services.AddHttpsRedirection внутри метода ConfigureServices.

Моя проблема заключается в том, что этот метод требует добавления пакета nuget Microsoft.AspNetCore.HttpsPolicy .

Я пытаюсь добавить директиву препроцессора, основанную на наличии этого пакета / dll.

Из того, что я исследовал, этоКажется, мне нужно использовать что-то вроде:

#if HTTPS_POLICY
   services.AddHttpsRedirection(options =>
        {
            //difference options
        });
#endif

Но я не могу понять, где я буду устанавливать символ HTTPS_POLICY .

I 'Мы нашли 2 возможных места:

  1. Используя файл .csproj, я могу установить DefineConstants элементов, используя атрибут Condition.
  2. Я могу установить условные символы компиляции внутри визуальногостудия.

НоЯ даже не уверен, что эти две вещи разные, они могут быть одинаковыми.

А для варианта 1 я не знаю, как использовать атрибут Condition для поискасуществование ссылки на пакет или dll.

Также учтите, я создаю библиотеку классов, которая будет использоваться другими проектами, и в идеале я не хочу, чтобы эти другие проекты должны были устанавливать условные символы и вещи,

Этого вообще можно добиться, если да, то как?

...