C#预处理器区分操作系统

标签 c# cross-platform c-preprocessor

是否可以使用 预处理器 区分 C# 中的操作系统?喜欢:

#if OS_WINDOWS
//windows methods
#elif OS_MAC
//mac  methods
#elif OS_LINUX
//linux methods
#endif

最佳答案

您所要求的是可能的,但需要一些工作。

  1. 在您的 csproj

    中定义一个预处理器变量
    <PropertyGroup Condition=" '$(OS)' == 'Windows_NT' ">
      <DefineConstants>_WINDOWS</DefineConstants>
    </PropertyGroup>
    
  2. 在您的代码中使用它

    #if _WINDOWS
      // your windows stuff
    #else
      // your *nix stuff
    #endif
    

我发现当您拥有依赖于操作系统的常量(例如 native 库名称)时,此技术很有用

关于C#预处理器区分操作系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30153797/

相关文章:

C# 复杂线程同步

c# - 使用 GET 的 ASP.Net MVC 模型绑定(bind)复杂对象

android - 基于 QML 模型的组件在 android 上具有未定义的 modelData

C 初始化矩阵

c# - 如何测量 UWP 应用程序中的文本大小?

c# - 在网格中查找偏移量

c++ - 使用 boost 查找目录空间详细信息

cross-platform - 是否可以使用 GLib 进行操作系统检测?

c++ - '#if _LFS64_LARGEFILE-0' 对 CPP 意味着什么?

c - 定义变量与初始化