Понятие прекомпилятора для типа проекта (целевой) в VC # - PullRequest
2 голосов
/ 02 марта 2020

Точно так же, как если бы проект находился в режиме DEBUG / RELEASE. Мы используем

#ifdef DEBUG
...

Есть ли что-то такое же для TARGET? (exe / lib / winexe)?

1 Ответ

1 голос
/ 02 марта 2020

Ничего встроенного нет, но в вашей сборке вы можете определить что угодно ; это может быть сделано вручную для каждого проекта, или вы можете сделать это более динамично; Вот пример, который условно добавляет символ PLAT_NO_EMITDLL, если целевой платформой является (любой из немногих), так что код может #if PLAT_NO_EMITDLL вместо того, чтобы иметь все «какая инфраструктура имеет какие платформы» logi c в C# files:

  <PropertyGroup Condition="'$(TargetFramework)' == 'netstandard2.0'">
    <DefineConstants>$(DefineConstants);PLAT_NO_EMITDLL</DefineConstants>
  </PropertyGroup>
  <PropertyGroup Condition="'$(TargetFramework)' == 'netstandard2.1'">
    <DefineConstants>$(DefineConstants);PLAT_NO_EMITDLL</DefineConstants>
  </PropertyGroup>

В вашем случае вы можете посмотреть на $(OutputType).

...