4

我注意到我的系统上有一些关于全局程序集缓存 (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

然而,通过 explorer shell(重启前后)查看 GAC 只显示一个版本:

在此处输入图像描述

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

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

4

1 回答 1

6

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

于 2013-01-23T14:59:06.380 回答