要求在GAC中安装log4net 1.2.10版

时间:2014-03-04 16:01:20

标签: visual-studio-2010 crystal-reports log4net gacutil

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

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

请注意,这是一个与此不同的错误: Error: Could not load log4net assembly

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

似乎没有直接的log4net引用。它可以在CrystalReports或NHibernate中使用,也可以两者兼用。

在Debug Configuration中,应用程序以32bit运行,在Release Configuration中,应用程序以64bit运行。如果我可以将发布配置作为32位运行,我认为这将解决问题。有谁能说怎么做?

3 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:2)

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

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

答案 2 :(得分:1)

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

我的解决方案是

  1. 从本地文件夹中删除并添加所有必需项目中的log4net引用。
  2. 检查log4net参考属性并确保属性" CopyLocal = True"对于所有参考。 (在我的案例中,其中一个引用的项目是使用&#34引用log4net; CopyLocal = False"从而在GAC中查找DLL)
  3. (对于ClickOnce部署应用程序)删除并添加主项目中引用的DLL(引用log4net)。这将强制所有DLL再次下载到客户端的机器上。
  4. 希望这有帮助。