装了多个.net的版本,那么GAC是如何自动区分的?
msdn(http://msdn.microsoft.com/zh-cn/library/dkkx7f79(v=vs.110).aspx)上面说:从 .NET Framework 4 开始,全局程序集缓存的默认位置为 %windir%\Microsoft.NET\assembly。
我在win7的机器上同时安装了VS2008和2012,也就同时有了.net3.5和.net4.5。我的上述GAC目录是C:\Windows\Microsoft.NET\assembly,我看下面的目录有GAC_32,GAC_64,GAC_MSIL,并没有在目录和文件的名字上严格区分.net3.5和.net4.5
那么我的.net程序在运行的时候,岂不是C#2008编译出来的和C#2012编译出来的,使用的是同一个System.XXX名称空间的dll? 例如,有C:\Windows\Microsoft.NET\assembly\GAC_32\System.Data\v4.0_4.0.0.0__b77a5c561934e089\System.Data.dll这个文件,那么是不是凡是用到了System.Data名称空间的程序,无论是.net3.5的还是4.5的,都会用到这个dll?
有点难以区分了。
[解决办法]
程序集有版本号
http://msdn.microsoft.com/zh-cn/library/51ket42z%28v=vs.110%29.aspx
*****************************************************************************
签名档: http://feiyun0112.cnblogs.com/