它的確切位置位於或託管
這只是一個普通的DLL,你會發現早在C中的它的x86版本:\ WINDOWS \ Microsoft.NET \框架\ V4。 0.30319 \ clrjit.dll。 x64版本位於Framework64目錄中。 .NET v2版本具有不同的名稱mscorjit.dll,可以在v2.0.50727目錄中找到它。
它根本沒有「託管」,操作系統完全不知道它存在。 CLR知道如何定位和加載它。必然如此,CLR決定何時開始一個計劃。它只是將DLL名稱硬編碼並使用LoadLibrary(「clrjit.dll」)加載它,GetProcAddress(「getJit」)來獲取工廠函數。一些你可以在CoreCLR源代碼中看到的東西,儘管在那個CLR版本中抖動不再是一個獨立的DLL。
你可以看到CLR與資源管理器,以及再次只是一個普通的DLL。它是v4版本中的clr.dll,v2版本中的mscorwks.dll和mscorsvc.dll。兩個不同的垃圾收集器,「wks」是工作站版本,「svc」是服務器版本。比較<gcServer>
配置文件條目。
這將問題轉移到「CLR如何加載?」這是c:\ windows \ syswow64 \ mscoree.dll的工作,當您在EXE項目中定位到x64時,您將使用c:\ windows \ system32 \ mscoree.dll。每個.NET程序集都有5或9個字節的非託管代碼,可跳入該DLL。可以是_CorExeMain或_CorDllMain,這取決於程序集是作爲exe還是庫構建的。 mscoree.dll查看程序集中的元數據,並確定CLR需要加載哪個版本才能正確執行。
更多的詭計正在進行中,我剛剛發佈了您要求的10,000英尺視圖。如果您對此感興趣,那麼您可能想了解關於custom CLR hosting的更多信息,以便看到幕後的男士。
如果冰箱通過使用小精靈或通過物理定律來冷卻它真的非常重要嗎? :-) – xanatos
請參閱http://stackoverflow.com/a/30377175/613130關於DNX如何工作以及它如何與.NET運行時不同的解釋......連接到問題 – xanatos
@xanatos那麼,如果你想要成爲精靈之一,我會說這非常重要。 – atlaste