Условные символы компиляции не работают - PullRequest
1 голос
/ 08 января 2020

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

Проект GUI

Conditional Compilation Symbol Project GUI

.csproj Configuration

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

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

Conditional Compilation Symbol usage

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

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

1 Ответ

1 голос
/ 08 января 2020

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

Вместо этого это должно быть обработано через config и среды. Вы можете даже иметь «демо» среду, если хотите, которая позволит вам просто ввести IWebHostingEnvironment и проверить _env.IsEnvironment("Demo"). Если не считать этого, вы должны просто указать через config (JSON, переменная окружения и т. Д. c.) Логическое значение "Demo", а затем извлечь это из IConfiguration.

...