在.NET 4源代码中,FEATURE_PAL编译指令是什么意思?

16

我不太理解 .net 4.0 源代码中的 FEATURE_PAL 编译指示符具体含义,尤其是在访问非托管代码的每个类中都有使用。请问这是什么意思?


嗯... .NET 4.0源代码?你的意思是,像头文件那样的吗? - BoltClock
2个回答

16

PAL = 平台适配层。它首先是CLR的细节,使其与操作系统实现隔离开来。您确实会在.NET 4类的参考源代码副本中看到它被使用。它出现在任何具有对底层操作系统实现的强烈依赖的代码中,并绕过这样的代码,因为它不能在除Windows以外的操作系统上工作。


4
您可能熟悉使用DEBUG和RELEASE指令来包装特定于测试/生产代码的代码块。.NET 4.0框架使用FEATURE_PAL编译器指令在新平台上执行代码。它必须通过调用在本地dll中找到的本地方法来适应平台。因此,该功能的名称为“平台适配层”。
在查看Process类的代码后,我遇到了这篇文章。可以想象,在给定平台上杀死进程的工作方式是不同的。
考虑您的代码在安装了ARM处理器的设备上运行的较新版本的Windows上运行。当终止进程时,您需要调用针对该平台量身定制的本地dll内部的方法。
因此,在为这些平台编译框架时,FEATURE_PAL编译器指令被设置为“条件编译符号”。

从.NET Framework参考源代码来看,目前FEATURE_MACL的名称似乎是FEATURE_PAL的同义词。 - robbie fan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接