首页 > 解决方案 > Wixsharp - 无法加载文件或程序集

问题描述

我正在尝试使用 DefaultRefAssemblies.Add 方法在 Wix# 托管项目中包含一些参考文件:

ManagedProject project = new ManagedProject();
project.DefaultRefAssemblies.Add("FontAwesome.Sharp.dll");
project.DefaultRefAssemblies.Add("protobuf-net.dll");
project.DefaultRefAssemblies.Add("Newtonsoft.Json.dll");
project.DefaultRefAssemblies.Add("ManagedOpenSsl.dll");
project.DefaultRefAssemblies.Add("ssleay32.dll");

当我尝试构建 MSI 时出现错误。问题恰好在于加载ssleay32程序集(OpenSSL 的一部分)。当我排除此文件时,构建成功。你能帮我理解这个例外吗?Wix# 项目的目标框架是 .NET Framework 4.8。

未处理的异常:System.BadImageFormatException:无法加载文件或程序集“从 WixSharp 加载的 361984 字节,版本 = 1.15.0.0,文化 = 中性,PublicKeyToken = 3775edd25acc43c2”或其依赖项之一。试图加载格式不正确的程序。---> System.BadImageFormatException:错误的 IL 格式。

标签: c#wixsharp

解决方案


Wixsharp 支持为以下目的编译的 .net 程序集:

  1. 平台 x86
  2. 托管程序集(非本机)
  3. 目标框架 3.5

因此,请确保“ssleay32.dll”具有上述 3 个要求。我发现的每个 ssleay32 程序集都是本地的(非托管的)。

如果没有运气的解决方法

您可以尝试将 ssleay32.dll 保存到嵌入资源文件中,并且在“ManagedOpenSsl.dll”类型使用之前,您应该在内存中加载 dll。加载非托管程序集

祝你好运!


推荐阅读