gpt4 book ai didi

c# - .NET应用程序运行时是否加载了mscorlib.dll/mscoree.dll

转载 作者:IT王子 更新时间:2023-10-29 04:41:59 26 4
gpt4 key购买 nike

我想澄清一些事情。

  1. 运行 .NET 控制台应用程序时,mscorlib.dll/mscoree.dll 是否会加载到进程的虚拟地址空间中?

  2. mscorlib.dll 和 mscoree.dll (CLR) 是托管 dll。对吗?

此外,有什么好的资源可以帮助您更好地了解 .NET 程序的执行方式?

最佳答案

是的。您将始终加载 mscoree.dll,这是默认 CLR 主机的 Bootstrap 。它是一个非托管 DLL。每个 .NET 程序集都包含一小部分 native 代码,只是跳转到该 DLL。然而,它确实被最近的 Windows 版本直接加载,操作系统加载器内置了 .NET 感知。当您打开非托管调试选项、Project + Properties、Debug 选项卡时,您可以在 Debug + Modules 窗口中看到它。然后您还会看到 mscorjit.dll、mscorwks.dll 和 msvcr80.dll,这是运行托管代码所需的其他三个 native 代码块。分别是即时编译器、CLR和C运行时支持库。它们在 .NET 4 中具有不同的 DLL 名称。

从技术上讲,可以不加载 mscorlib.dll,编译器有/nostdlib 选项来避免引用该程序集。实际上,只有在您提供替代品时才有效,例如,这就是 Silverlight 的编译方式。它是一个混合模式程序集,具有一些 native 代码但主要是托管代码。因此,它有一个针对 64 位框架的单独版本。您还会看到启用了非托管调试的 mscorlib.ni.dll,这是程序集的 ngen-ed 版本。

关于c# - .NET应用程序运行时是否加载了mscorlib.dll/mscoree.dll,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9545603/

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