Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# .NET应用程序运行时是否加载了mscorlib.dll/mscoree.dll_C# - Fatal编程技术网

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

C# .NET应用程序运行时是否加载了mscorlib.dll/mscoree.dll,c#,C#,我正试图澄清一些事情 运行.NET控制台应用程序时,是否会在进程的虚拟地址空间中加载mscorlib.dll/mscoree.dll mscorlib.dll和mscoree.dll(CLR)不是受管dll。对吗 另外,了解.NET程序是如何执行的,什么是一个很好的资源?我建议阅读Jefrey Richter的书。它非常清楚地解释了引擎盖下发生的事情:) 另外,您可能会发现这个问题很有帮助:.Net可执行文件与任何其他PE文件没有什么不同。因此,与本机可执行文件中导入的所有dll一样,mscor

我正试图澄清一些事情

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

  • mscorlib.dll和mscoree.dll(CLR)不是受管dll。对吗


  • 另外,了解.NET程序是如何执行的,什么是一个很好的资源?

    我建议阅读Jefrey Richter的书。它非常清楚地解释了引擎盖下发生的事情:)


    另外,您可能会发现这个问题很有帮助:

    .Net可执行文件与任何其他PE文件没有什么不同。因此,与本机可执行文件中导入的所有dll一样,mscorlib.dll加载到.net可执行文件的进程虚拟空间中。
    如果您感兴趣,可以阅读有关PE文件格式的内容

    是。您将始终加载mscoree.dll,这是默认CLR主机的引导程序。它是一个非托管DLL。每个.NET程序集都包含少量本机代码,只需跳转到该DLL即可。不过,它确实是由最新的Windows版本直接加载的,操作系统加载器内置了.NET感知功能。打开“非托管调试”选项“项目+属性”的“调试”选项卡时,可以在“调试+模块”窗口中看到它。然后还将看到mscorjit.dll、mscorwks.dll和msvcr80.dll,这是运行托管代码所需的其他三块本机代码。分别是即时编译器、CLR和C运行时支持库。它们在.NET4中有不同的DLL名称

    从技术上讲,不加载mscorlib.dll是可能的,编译器具有/nostlib选项以避免引用该程序集。实际上,只有当您提供一个替代项时,这才有效,例如Silverlight就是这样编译的。它是一个混合模式程序集,包含一些本机代码,但大部分是托管代码。因此,64位框架有一个单独的版本。您还将看到启用了非托管调试的mscorlib.ni.dll,这是程序集的非托管版本