c# - 程序集不在 GAC 中,但 gacutil 显示它在那里

标签 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 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=MSIL

Number of items = 2

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

enter image description here

我的应用程序无法解析程序集,但当我将它放入应用程序库(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/

相关文章:

visual-studio - 如果GAC中有多个同一个DLL,VS会选择哪个版本?

c# - Console.Writeline 停止我的程序... C#

c# - 使用 Linq 同时查询两个集合

c# - 枢轴重叠 WP 8.1 通用应用程序中的其他元素(并自动更改边距)

c# - 如何将多个字符串值传递给 C# 中的按钮单击事件处理程序

.net - Gacutil.exe 成功添加程序集,但程序集在资源管理器中不可见。为什么?

c# - 如何将二进制文件读入字节数组?

c# - 更改 DropDownListFor 样式

c# - 更改 ListBox 的选择会更改其他 ListBox 的选择。这是怎么回事?

visual-studio-2010 - Visual Studio 2010 安装项目 - 两个或多个对象具有相同的目标位置