9

可能重复:
条件编译和框架目标

我有一些适用于 .NET 4 的代码,但它不适用于 .NET 3.5。在 .NET 3.5 中,它需要使用对 Windows 的互操作调用。

我想在这两种情况下使用“ifdef”来使用不同的代码路径(最终我将弃用 .NET 3.5 代码)。

是否有预定义的指令值来识别代码何时使用 .NET 4 编译?

DEBUG是否与所有预定义指令( 、TRACE等)有良好的链接?下面的页面只给出了指令,而不是标准的预定义值:

C# 预处理器指令

4

2 回答 2

15

我认为这就是你要找的:

#if NET40   
...  
#elif NET35  
...  
#else NET20  
...  
#endif  
于 2011-02-03T18:30:04.340 回答
7

编译器不知道任何特定的 .NET Framework 版本。它所看到的只是参考程序集。也不能保证您的程序将使用您所针对的 .NET 版本运行。即使您是为 2.0 构建的,也很有可能使用 .NET 4.0 CLR 运行。

改为使用Environment.Version

于 2011-02-03T18:41:02.313 回答