装配不在GAC,但gacutil显示它在那里

时间:2013-01-23 14:38:01

标签: c# .net gac .net-assembly global-assembly-cache

我注意到我的系统上有关全局程序集缓存(GAC)的一些奇怪行为。我感兴趣的程序集是log4net Version = 1.2.11.0

gacutil /l "log4net"的输出是:

  

C:\ Windows \ system32> gacutil / l“log4net”Microsoft(R).NET Global   程序集缓存工具。版本4.0.30319.1版权所有(c)Microsoft   公司。保留所有权利。

     

全局程序集缓存包含以下程序集:
  log4net,Version = 1.2.10.0,Culture = neutral,PublicKeyToken = 1b44e1d426115821,processorArchitecture = MSIL
  log4net,Version = 1.2.11.0,Culture = neutral,PublicKeyToken = 669e0ddf0bb1aa2a,processorArchitecture = MSIL

     

项数= 2

但是,通过资源管理器shell(重启之前和之后)查看GAC只显示一个版本:

enter image description here

由于我的应用程序无法解析程序集,但在将其放入应用程序库(bin文件夹)时工作正常。根据{{​​3}},GAC将在之前的应用程序库中进行探测 - 这将指向程序集不在GAC中。

GAC中的log4net Version=1.2.11.0也是如此?如果是这样,为什么我的应用程序无法找到它?

1 个答案:

答案 0 :(得分:6)

您正在查看.NET 2.0 GAC,但是,log4net v1.2.11.0是.NET 4程序集。 .NET 4有自己的GAC,位于%winddir%\Microsoft.NET\Assembly。检查那里的GAC_MSIL目录,我敢打赌你会找到它。