【发布时间】:2011-07-18 19:38:17
【问题描述】:
我无法理解 FEATURE_PAL 编译器指令在 .net 4.0 源代码中的含义。它几乎用于所有访问非托管代码的类。
【问题讨论】:
-
嗯....NET 4.0 源代码?你的意思是,比如标题?
我无法理解 FEATURE_PAL 编译器指令在 .net 4.0 源代码中的含义。它几乎用于所有访问非托管代码的类。
【问题讨论】:
PAL = 平台适配层。它首先是 CLR 的一个细节,将它与操作系统实现隔离开来。您确实会看到它在 .NET 4 类的源代码的参考源副本中使用。它出现在任何强烈依赖底层操作系统实现的代码中,绕过此类代码,因为它无法在 Windows 以外的操作系统上运行。
【讨论】:
您可能熟悉使用 DEBUG 和 RELEASE 指令来包装特定于测试/生产代码的代码块。
.NET 4.0 框架使用 FEATURE_PAL 编译器指令在较新的平台上执行代码。它必须通过调用本机 dll 中的本机方法来适应平台。因此该功能的名称为:“平台适配层”。
我是在查看 Process 类的代码后看到这篇文章的。可以想象杀死一个进程在给定平台上的工作方式不同。
想想您的代码在安装在使用 ARM 处理器的设备上的较新版本的 Windows 上运行。终止进程时,您需要调用针对该平台量身定制的本机 dll 中的方法。
因此,在为此类平台编译框架时,FEATURE_PAL 编译器指令设置为“条件编译符号”。
【讨论】: