3

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

在我的开发机器上,我有 2 个经过 GAC 处理的 log4net 文件:一个 x86,一个 64 位。用户机器只有 x86 版本。所以我猜用户需要64位,是吗?如果是这样,我如何安装 64 位版本的 log4net?

请注意,这是一个不同的错误: 错误:无法加载 log4net 程序集

我发现了另一个不同之处。如果我在开发/调试配置中发布,它可以工作。如果我在发布配置中发布,我会收到错误消息。

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

在调试配置中,应用程序以 32 位运行,在发布配置中,应用程序以 64 位运行。如果我可以让发布配置以 32 位运行,我认为这将解决问题。谁能说这是怎么做到的?

4

3 回答 3

4

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

于 2014-03-05T18:32:54.600 回答
3

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

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

于 2014-03-04T17:01:54.177 回答
1

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

对我有用的解决方案是

  1. 从本地文件夹中删除并添加所有必需项目中的 log4net 引用。
  2. 检查 log4net 引用属性并确保所有引用的属性“CopyLocal=True”。(在我的情况下,引用的项目之一是使用“CopyLocal = False”引用 log4net,因此在 GAC 中寻找 DLL)
  3. (对于 ClickOnce 部署应用程序)在主项目中删除并添加引用的 DLL(引用 log4net)。这将强制所有 DLL 再次下载到客户端的机器上。

希望这可以帮助。

于 2017-02-21T08:27:51.883 回答