一千萬個為什麽

搜索

.NET 4.0有一個新的GAC,為什麽?

%windir%\Microsoft.NET\assembly\ is the new GAC. Does it mean now we have to manage two GACs, one for .NET 2.0-3.5 applications and the other for .NET 4.0 applications?

問題是,為什麽?

最佳答案

是的,因為有2個不同的全局程序集緩存(GAC),您必須單獨管理它們。

在.NET Framework 4.0中,GAC經歷了一些更改。 GAC分為兩個,每個CLR一個。

     

用於.NET Framework 2.0和.NET Framework 3.5的CLR版本是CLR 2.0。前兩個框架​​版本中沒有必要拆分GAC。在Net Framework 4.0中破壞舊應用程序的問題。

     

為了避免CLR 2.0和CLR 4.0之間的問題,GAC現在分為每個運行時的私有GAC。主要變化是CLR v2.0應用程序現在無法在GAC中看到CLR v4.0程序集。

來源

為什麽嗎

這似乎是因為.NET 4.0中存在CLR更改,而不是2.0到3.5。 1.1到2.0 CLR也發生了同樣的事情。似乎GAC能夠存儲不同版本的程序集,只要它們來自同一個CLR。他們不想破壞舊的應用程序。

請參閱有關4.0中GAC更改的MSDN 中的以下信息。

例如,如果.NET 1.1和.NET 2.0共享相同的GAC,則從此共享GAC加載程序集的.NET 1.1應用程序可能會獲得.NET 2.0程序集,從而破壞.NET 1.1應用程序

     

用於.NET的CLR版本   Framework 2.0和.NET Framework 3.5   是CLR 2.0。因此,那裏   在前兩次沒有必要   框架版本將拆分GAC。   打破老年人的問題(在此   case,.NET 2.0)應用程序   在Net Framework 4.0中重新出現   CLR 4.0發布了哪一點。因此,   避免之間的幹擾問題   CLR 2.0和CLR 4.0,現在是GAC   每個人分成私人GAC   運行時。

隨著CLR在未來版本中更新,您可以期待相同的事情。如果只有語言更改,那麽您可以使用相同的GAC。

轉載註明原文: .NET 4.0有一個新的GAC,為什麽?