要求在GAC中安装log4net 1.2.10版本



使用windows智能客户端应用程序,它在我的(开发)机器上运行良好,但当我将其安装在用户的机器上时,我会收到以下错误:
Requires log4net version 1.2.10 be installed in GAC

在我的开发机器上,我有两个GACed的log4net文件:一个x86,一个64位。用户计算机只有x86版本。所以我想用户需要64位,是吗?如果是,我该如何安装64位版本的log4net?

请注意,这与以下错误不同:错误:无法加载log4net程序集

我发现了另一个不同。如果我在开发/调试配置中发布,它就可以工作。如果我在Release配置中发布,我会得到错误。

似乎没有直接的log4net引用。它用于CrystalReports或NHibernate或两者。

在调试配置中,应用程序以32位运行,在发布配置中,该应用程序以64位运行。如果我能让Release Configuration作为32位运行,我想这将解决问题。有人能说出这是怎么做到的吗?

您可以在Visual Studio中将发布配置更改为x86=>项目属性=>编译=>高级编译选项

检查log4net引用上是否有Copy local=true。如果为false,则必须将log4net安装在GAC中,如果为true,则将其包含在应用程序bin目录中。

如果您想在gac中安装它,可以使用gautil将log4net.dll安装到gac中。检查您的应用程序是否在64位(进程资源管理器)中运行,如果是,则需要安装64位版本。

我的ClickOnce应用程序也遇到了类似的问题。我试图将log4net dll放入GAC并发布,但没有成功。它也与32/64位版本无关。

对我有效的解决方案是

  1. 从本地文件夹中删除并添加所有必需项目中的log4net引用
  2. 检查log4net引用属性,并确保所有引用的属性为"CopyLocal=True">(在我的案例中,一个引用的项目引用了带有"CopyLocal=False"的log4net,从而在GAC中查找DLL)
  3. (对于ClickOnce部署应用程序)在主项目中删除并添加引用的DLL(引用log4net)。这将强制所有DLL再次下载到客户端的计算机上

希望这能有所帮助。

最新更新