%windir%\Microsoft.NET\assembly\
是新的GAC.这是否意味着我们现在必须管理两个GAC,一个为.NET 2.0-3.5应用程序,另一个用于.NET 4.0应用程序?
问题是,为什么?
%windir%\Microsoft.NET\assembly\
是新的GAC.这是否意味着我们现在必须管理两个GAC,一个为.NET 2.0-3.5应用程序,另一个用于.NET 4.0应用程序?
问题是,为什么?
是的,因为有两个不同的全局程序集缓存(GAC),所以必须分别管理它们.
在里面NET Framework 4.0,GAC进行了一些更改.GAC分为两部分,每个CLR一个.
CLR版本同时用于这两种情况.NET Framework 2.0和.NET Framework 3.5是CLR 2.0.在前两个框架版本中,没有必要拆分GAC.在NetFramework4.0中中断旧应用程序的问题.
为避免在CLR 2.0和CLR 4.0之间出现问题,现在针对每个运行时将GAC拆分为专用GAC.主要更改是CLR v2.0应用程序现在无法在GAC中看到CLR v4.0程序集.
Why?
这似乎是因为在.NET4.0中有CLR变化,而在2.0到3.5中没有变化.1.1到2.0 CLR也发生了同样的情况.GAC似乎有能力存储不同版本的程序集,只要它们来自同一CLR.他们不想 destruct 旧的应用程序.
请参阅MSDN about the GAC changes in 4.0中的以下信息.
例如,如果.NET 1.1和.NET 2.0共享同一GAC,则从该共享GAC加载程序集的.NET 1.1应用程序可能获得.NET 2.0程序集,从而 destruct .NET 1.1应用程序
用于.NET和.NET的CLR版本 Framework 2.0和.NET Framework 3.5 是CLR 2.0.因此,在那里 在前两场比赛中不需要 用于拆分GAC的框架版本. 破旧的问题(在这个问题上 case ,.NET 2.0)应用程序 Net Framework4.0中的重新出现在 CLR 4.0发布的哪一点.因此, 要避免相互之间的干扰问题,请执行以下操作 CLR 2.0和CLR 4.0,GAC现在 for each 拆分成私有GAC 运行时.
随着CLR在future 版本中的更新,您可以期待同样的事情.如果只改变语言,那么你可以使用相同的GAC.