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

m.e*_*son 4 .net c# gac global-assembly-cache .net-assembly

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

输出gacutil /l "log4net"是:

C:\ Windows\system32> gacutil/l"log4net"Microsoft(R).NET全局程序集缓存实用程序.版本4.0.30319.1版权所有(c)Microsoft Corporation.版权所有.

全局程序集缓存包含以下程序集:
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只显示一个版本:

在此输入图像描述

由于我的应用程序无法解析程序集,但是当我将它放入应用程序库(bin文件夹)时工作正常,这一点更加复杂.根据这篇文章,GAC将在应用程序基础之前进行探测- 这将指向程序集不在GAC中.

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

Ste*_*ner 6

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