gpt4 book ai didi

.net - 为什么不是 GAC 中的所有程序集都构建为 MSIL?

转载 作者:行者123 更新时间:2023-12-04 06:18:14 24 4
gpt4 key购买 nike

不是全局程序集缓存 (GAC) 中的所有程序集都构建为 MSIL 的原因是什么? ?我看到x86AMD64用于某些程序集的架构类型,如下例所示,但不适用于其他程序集:
C:\Windows\assembly\
enter image description here

为什么是 System.Data为两种不同的处理器架构而构建,而 System.CoreMSIL ?
C:\Windows\Microsoft.NET\assembly
enter image description here

在 GAC 的第二个版本下可以看到类似的模式,如上所示。程序集分为不同的架构,但并非所有架构都内置于 32/64 中。版本——有些只是 MSIL .

最佳答案

编译库时,您可以选择以“任何 CPU”或特定处理器架构为目标。

“Any CPU”库只需要 GAC 中的一个条目,并且整个程序集被编译为 MSIL。

其他程序集需要为每个架构使用不同的库。这些库是为每种 CPU 类型构建的,并且在 GAC 中有多个副本。最常见的原因是包含非托管代码或加载特定于体系结构的 native dll。

在您的示例中 System.Core 可能是完全托管的代码,而 System.Data 可能构建在一堆 native Windows 库之上。

以 32 位模式运行的应用程序将加载 32 位版本的库,而以 64 位模式运行的应用程序将加载 64 位版本。

关于.net - 为什么不是 GAC 中的所有程序集都构建为 MSIL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27893326/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com