代码之家  ›  专栏  ›  技术社区  ›  Al Lelopath

需要在GAC中安装log4net版本1.2.10

  •  3
  • Al Lelopath  · 技术社区  · 11 年前

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

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

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

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

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

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

    3 回复  |  直到 8 年前
        1
  •  4
  •   Cerveser    11 年前

    您可以在Visual Studio中将Release配置更改为x86=>项目财产=>编译=>高级编译选项

        2
  •  3
  •   Peter    11 年前

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

    如果要在gac中安装它,可以使用gacutil将log4net.dll安装到gac中。检查应用程序是否以64位(process explorer)运行,如果是,则需要安装64位版本。

        3
  •  1
  •   A_B    8 年前

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

    对我有效的解决方案是

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

    希望这有帮助。