【问题标题】:Acumatica Publishing with DLL resulting in System.BadImageFormatException使用 DLL 发布 Acumatica 导致 System.BadImageFormatException
【发布时间】:2019-03-07 00:44:11
【问题描述】:

我正在尝试将一些外部 DLL 添加到 Acumatica 自定义项目,但在发布时会导致“System.BadImageFormatException:可执行文件 (.exe) 或库 (.dll) 的格式无效。”

错误图片:

我已经在自定义中添加了多个 DLL。并使用此处指定的方法:Acumatica unable to publish the Customization Package 跳过错误,但在这种情况下它似乎不起作用。

【问题讨论】:

    标签: acumatica


    【解决方案1】:

    第一步应该是确定哪个 DLL 是罪魁祸首。我建议你创建一个空项目,并使用忽略规则将文件一一放入其中。也许您错过了为其中一个文件添加忽略规则。

    发生此错误是因为 Acumatica 尝试将 DLL 解析为 .Net 框架程序集。如果您添加非 .Net 程序集,例如原生 x86/x64 编译库,您需要添加忽略规则,以便 Acumatica 不会尝试解析它。

    如果错误来自您编译的 DLL,请确保它是在 Any CPU 平台上编译的。这可以防止任何与 32 位/64 位不匹配相关的不兼容问题。

    【讨论】:

    • 我知道是哪些 DLL 导致了这些问题,它们不是我自己编译的,而是第三方 DLL。不幸的是,它们不是在任何 CPU 配置下编译的 x86 或 x64,而且它们是非托管 DLL。请问如何向 Acumatica 添加忽略规则?谢谢
    • 忽略规则是使用您在问题中链接到的方法添加的。这里可能会发生两件事。 1. 忽略规则设置不正确,这就是为什么我建议仔细检查并一次处理一个文件。 2. 较新版本的 Acumatica 没有以相同的方式使用忽略规则或包含错误。我认为这不太可能,但应该是可测试的。如果相同的项目在旧版本中工作,那么它指向产品中的错误。关于忽略规则的文档:help-2018r1.acumatica.com/Wiki/(W(2))/…
    • 啊,好吧..认为有一种方法可以忽略整个 DLL,而不仅仅是它给您的错误消息。我尝试将错误消息添加到忽略规则中,但不幸的是它仍然导致相同的错误消息:/
    • 我认为忽略规则是唯一的方法,因此您需要仔细检查您是否正确地将错误消息放在那里(准确的复制/粘贴)。这是该文件包含的需要忽略规则的外部 DLL 的示例:PdfPrintingNet.dll 无法解析方法参考:PdfEdit.Drawing.BarCodes.CodeBase/c070bf7cf4300b5656d19c5f7e7750043& PdfEdit.Drawing.BarCodes.CodeBase/c070bf7cf4300b5656d1905f7e7750. .,0...]::Address(System.Int32,System.Int32) 在 PdfPrintingNet.dll 中声明
    • 在你的情况下,这将是复制粘贴:System.BadImageFormatException…直到第 133 行
    猜你喜欢
    • 2020-12-08
    • 2021-01-05
    • 2012-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-25
    • 2021-02-22
    • 1970-01-01
    相关资源
    最近更新 更多