c# - 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 格式。
解决方案
Wixsharp 支持为以下目的编译的 .net 程序集:
- 平台 x86
- 托管程序集(非本机)
- 目标框架 3.5
因此,请确保“ssleay32.dll”具有上述 3 个要求。我发现的每个 ssleay32 程序集都是本地的(非托管的)。
如果没有运气的解决方法:
您可以尝试将 ssleay32.dll 保存到嵌入资源文件中,并且在“ManagedOpenSsl.dll”类型使用之前,您应该在内存中加载 dll。加载非托管程序集
祝你好运!
推荐阅读
- caching - 无缘无故快速清除页面
- scipy - 通过 scipy.integrate.odeint 求解微分方程组
- javascript - 在鼠标输入时从数组中加载下一个图像
- visual-studio - 如何通过运行设置文件从代码覆盖分析结果中排除迁移文件夹?
- firebase - 可以对低容量的 Firestore 集合执行完整的集合扫描吗?
- python - 卷积层后全连接层的节点数不正确
- python - 如何使用循环更改列表中的值
- python - Python3中按键添加和删除的最有效数据结构
- algorithm - 级联矩阵算法与可能的二叉树数量有什么关系?
- c - 释放字符串结构时在 C 中检测到双释放