%windir%\Microsoft.NET\assembly\
是新的GAC。这是否意味着现在我们必须管理两个GAC,一个用于.NET 2.0-3.5应用程序,另一个用于.NET 4.0应用程序?
问题是,为什么?
答案
是的,由于有2个不同的全局装配缓存(GAC),因此您必须单独管理它们。
在.NET Framework 4.0中,GAC进行了一些更改。GAC分为两个,每个CLR一个。
用于 .NET Framework 2.0 和 .NET Framework 3.5 的 CLR 版本是 CLR 2.0。
为了避免CLR 2.0和CLR 4.0之间的问题,现在每个运行时GAC分为私有GAC。主要更改是CLR V2.0应用程序现在无法在GAC中看到CLR V4.0组件。
Why?
这似乎是因为.NET 4.0中有CLR变化,但在2.0至3.5中没有变化。1.1至2.0 CLR也发生了同样的事情。只要GAC来自同一CLR,GAC似乎可以存储不同版本的组件。他们不想打破旧应用程序。
查看以下信息关于GAC变化4.0的MSDN。
例如,如果.NET 1.1和.NET 2.0都共享了相同的GAC,则来自此共享GAC的程序集的.NET 1.1应用程序可以获取.NET 2.0组件,从而破坏.NET 1.1应用程序
用于 .NET Framework 2.0 和 .NET Framework 3.5 的 CLR 版本是 CLR 2.0。
随着CLR在以后的版本中更新,您可以期待同一件事。如果只有语言更改,则可以使用相同的GAC。