在C#中有一种简单的方法可以根据操作系统版本获得条件编译符号

Joh*_*ons 6 c# conditional-compilation

我有一堆单元测试需要基于Windows操作系统版本进行条件编译.此单元测试正在测试仅在Windows Vista及更高版本中可用的TxF.

#if WIN_OS_VERSION >= 6.0
// Run unit tests
#endif
Run Code Online (Sandbox Code Playgroud)

Jon*_*Jon 4

我认为没有办法根据操作系统版本有条件地编译代码。#define 的文档指出(重点是我的):

符号可用于指定编译条件。您可以使用#if 或#elif 测试符号。您还可以使用条件属性来执行条件编译。

您可以定义符号,但不能为符号指定值。在使用任何非指令的指令之前,#define 指令必须出现在文件中。

您还可以使用 /define 编译器选项定义符号。您可以使用#undef 取消定义符号。

使用 /define 或 #define 定义的符号不会与同名变量冲突。也就是说,变量名不应传递给预处理器指令,并且符号只能由预处理器指令求值。

使用#define 创建的符号的范围是定义该符号的文件。

您必须有条件地运行它:

void TestTxF() {
    if (System.Environment.OSVersion.Version.Major < 6) {
        // "pass" your test
    }
    else {
        // run it
    }
}
Run Code Online (Sandbox Code Playgroud)

更新:

这个问题以前有人问过。