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

Posted

技术标签:

【中文标题】VC#中项目类型(目标)的预编译器概念【英文标题】:Precompiler notion for project type (target) in VC# 【发布时间】:2020-03-02 06:50:16 【问题描述】:

就像在 DEBUG / RELEASE 模式下的项目一样 我们使用

#ifdef DEBUG
...

TARGET 有什么相同的吗? (exe/lib/winexe) ?

【问题讨论】:

如果您查看 Debug 配置的开箱即用项目配置,您将看到 DEBUG 在预定义符号列表中。这就是它放在那里的原因。你可以使用任何你想要的符号,EXE、DOG 等等。没有魔法 【参考方案1】:

没有内置任何东西,但在你的构建中你可以定义任何你喜欢的东西;这可以在每个项目中手动完成,或者您可以更动态地完成;这是一个示例,如果目标框架是(少数几个),则有条件地附加 PLAT_NO_EMITDLL 符号,以便代码可以 #if PLAT_NO_EMITDLL 而不是在 C# 文件中包含所有“哪个框架具有哪些平台功能”逻辑:

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

【讨论】:

以上是关于VC#中项目类型(目标)的预编译器概念的主要内容,如果未能解决你的问题,请参考以下文章

MySQL的预编译入门

构建工作,但发布期间的预编译失败

C中的预编译宏定义

JS中的预编译(词法分析)阶段和执行阶段

使用 Qt Creator / qmake / MinGw 的预编译标头无法在调试版本中工作

构建服务器上的预构建事件咕噜声,没有找到咕噜声