簡體   English   中英

Ngen錯誤,因為“ Mscorlib.dll沒有本地映像”(僅x64,僅.NET 4.0)

[英]Ngen error because “Mscorlib.dll does not have a native image” (x64 only, .NET 4.0 only)

我正在嘗試使用64位Windows 7使用Ngen生成.NET 4.0應用程序的本機映像。當Platform設置為x64(或任何CPU )時-Ngen失敗,抱怨' NGen無法繼續,因為Mscorlib.dll沒有本地圖像

當編譯為x86並使用適當的Ngen時-可以正常工作。 另外,將.NET版本更改為2.0時,它也可以工作。 (當嘗試使用x86 Ngen將Ngen x64應用程序使用時,它告訴我應該使用64位版本。)

更多信息

這是我在CMD中看到的(一部分):橢圓(= ...)存在於原件中。

1> 編譯程序集mscorlib ,版本= 4.0.0.0,文化=中性,PublicKeyToken = b77a5c561934e089(CLR v4.0.30319)...

1> mscorlib ,版本= 4.0.0.0,文化=中性,PublicKeyToken = b77a5c561934e089

2>編譯程序集可訪問性,版本= 4.0.0.0,區域性=中性,公共KeyToken = b03f5f7f11d50a3a(CLR v4.0.30319)...

2> Ngen無法生成用於圖像可訪問性的本機代碼,版本= 4.0.0.0,Culture =中性,PublicKeyToken = b03f5f7f11d50a3a,因為以下錯誤: NGen無法繼續,因為Mscorlib.dll沒有本機圖像 (HRESULT的異常:0x80131F06 )

C:\\Windows\\assembly搜索,我發現了3個mscorlib.dll 一個在GAC_32 ,一個在GAC_64 (都在以2.0.0.0開頭的子文件夾中),另一個在子文件夾temp

C:\\Windows\\Microsoft.NET內部搜索時,我發現其中有六個:兩個在assembly下(在GAC3264 )都在以'v4.0 ...'開頭的文件夾中,四個在Framework的下:2 框架Framework64兩(在每個-一個在“V2.0 ......”,一個在“V4.0 ...”)。

這是否意味着只有.NET 2.0 mscorlib才能真正作為本機映像運行(需要時)? Ngen為什么不能成功保存.NET 4.0的本機映像?

底線 :如何創建針對x64的.NET 4.0應用程序的本機映像?

這不健康。 在計算機上安裝.NET時,應該已經創建了mscorlib.dll的ngen映像。 它位於c:\\ windows \\ assembly \\ NativeImages_v4.0.30319_64 \\ mscorlib \\ ab0a8fc3d086a3aaf942f366a12a9185 \\ mscorlib.ni.dll中。 我不確定目錄名稱的哈希部分從一台計算機到另一台計算機的重復程度。

在Windows資源管理器中看不到此文件,必須使用命令提示符。 去檢查它是否存在,如果缺少.NET,則在安裝.NET時出現嚴重問題。 “ .NET運行時優化服務”是完成該工作的一項,請確保未禁用它。

一個標准錯誤是從未提升的命令提示符下運行ngen.exe。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM