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)
我认为没有办法根据操作系统版本有条件地编译代码。#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)
更新:
这个问题以前有人问过。