Символы условной компиляции не работают

Практически во всех версиях Visual Studio есть множество сообщений об ошибках с похожими или точно такими же проблемами. Проблема в том, что все отчеты об ошибках, которые я нашел, уже были решены. Дополнительная информация: мой точно такой же код работал месяц назад. Я использую .NET Core 3.1.100 и Visual Studio 16.4.2.

Графический интерфейс проекта

Графический интерфейс проекта символа условной компиляции

Конфигурация .csproj

<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Demo|AnyCPU'">
  <DefineConstants>DEMO</DefineConstants>
</PropertyGroup>

Код (как видите, символ DEMO применяться не будет).

Использование символа условной компиляции

Кто-нибудь знает, как исправить эту проблему для моей производственной среды?

Заранее спасибо!


person WΩLLE - ˈvɔlə    schedule 08.01.2020    source источник


Ответы (1)


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

Вместо этого это должно обрабатываться через конфигурацию и среду. У вас даже может быть «Демо-среда», если хотите, которая позволит вам просто ввести IWebHostingEnvironment и проверить _env.IsEnvironment("Demo"). Кроме того, вы должны просто указать через конфигурацию (JSON, переменную среды и т. д.) логическое значение «Демо», а затем вытащить его из IConfiguration.

person Chris Pratt    schedule 08.01.2020
comment
Швы очень разумные. Есть ли какая-либо документация, в которой упоминается устаревание конфигураций сборки в .NET Core? - person WΩLLE - ˈvɔlə; 08.01.2020
comment
Большое спасибо, сэр! Вы избавили меня от головной боли :) - person WΩLLE - ˈvɔlə; 08.01.2020