我注意到我的系统上有一些关于全局程序集缓存 (GAC) 的奇怪行为。我感兴趣的程序集是 log4net Version=1.2.11.0
gacutil/l "log4net"
的输出是:
C:\Windows\system32>gacutil /l "log4net" Microsoft (R) .NET Global Assembly Cache Utility. Version 4.0.30319.1 Copyright (c) Microsoft Corporation. All rights reserved.
The Global Assembly Cache contains the following assemblies:
log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=1b44e1d426115821, processorArchitecture=MSIL
log4net, Version=1.2.11.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a, processorArchitecture=MSILNumber of items = 2
但是通过 explorer shell 查看 GAC(重启前后)只显示一个版本:
我的应用程序无法解析程序集,但当我将它放入应用程序库(bin 文件夹)时工作正常,这使情况更加复杂。根据this article GAC 将在应用程序基础之前被探测 - 这将指向程序集不在 GAC 中。
GAC 中的 log4net Version=1.2.11.0
也是如此吗?如果是这样,为什么我的应用程序找不到它?
最佳答案
您正在查看 .NET 2.0 GAC,但是,log4net v1.2.11.0 是一个 .NET 4 程序集。 .NET 4 有自己的 GAC,位于 %winddir%\Microsoft.NET\Assembly
。检查那里的 GAC_MSIL 目录,我敢打赌您会找到它。
关于c# - 程序集不在 GAC 中,但 gacutil 显示它在那里,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14482236/