我在理解.net 4.0源代码中FEATURE_PAL编译器指令的含义时遇到问题。几乎在每个访问非托管代码的类中都使用它。
答案 0 :(得分:12)
PAL =平台适应层。它首先是CLR的一个细节,使其与操作系统实现隔离开来。您确实会在.NET 4类的源代码的Reference Source副本中看到它。它出现在任何对底层操作系统实现有很强依赖性的代码中,绕过这些代码,因为它无法在Windows以外的操作系统上运行。
答案 1 :(得分:3)
您可能熟悉使用DEBUG和RELEASE指令来包装特定于测试/生产代码的代码块。
.NET 4.0框架使用FEATURE_PAL编译器指令在较新的平台上执行代码。它必须通过调用本机dll中的本机方法来适应平台。因此,该功能的名称:'平台适应层'。
在查看Process类的代码后,我看到了这篇文章。可以想象杀死一个进程在给定平台上的工作方式不同。
考虑在使用ARM处理器的设备上安装的较新版本Windows上运行的代码。在杀死进程时,您需要在为该平台定制的本机dll中调用方法。
因此,在为这些平台编译框架时,FEATURE_PAL编译器指令被设置为'条件编译符号'。