VC# 中项目类型(目标)的预编译器概念

Precompiler notion for project type (target) in VC#

就好像项目处于 DEBUG / RELEASE 模式一样 我们使用

#ifdef DEBUG
...

TARGET 有相同的东西吗? (exe / lib / winexe) ?

没有内置任何东西,但在您的构建中您可以定义任何您喜欢的东西;这可以针对每个项目手动完成,或者您可以更动态地完成;这是一个示例,如果目标框架是(几个中的任何一个),则有条件地附加 PLAT_NO_EMITDLL 符号,以便代码可以 #if PLAT_NO_EMITDLL 而不是在 C# 文件中包含所有 "which framework has what platform features" 逻辑:

  <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)