gpt4 book ai didi

c# - 读取嵌入式程序集 (.dll) 时出现问题

转载 作者:太空宇宙 更新时间:2023-11-03 13:58:49 25 4
gpt4 key购买 nike

因此,我正在为我的一个项目制作一个定制的安装程序,我需要的是将所有内容“打包”到一个文件中。 (我不能使用 ILMerge 或 .NETZ,因为我必须包括的其中一件事是一个非托管的(它是如何被调用的?)程序集。)不管怎样,我主要从这里读了很多东西,人们说要这样做:

  • 将 .dll 添加为嵌入式资源;
  • 向 AssemblyResolve 方法添加处理程序,以便在我的应用程序找不到程序集时启动它
  • 在该处理程序中,使用将输入流传输到 Assembly.Load() 可以使用的字节数组的函数,使其从内存加载 .dll。

我做了所有这些事情,并添加了对 .dll 的正常引用,因此我的代码可以正确编译。但是,当我从应用程序所在的目录中删除 .dll 文件并尝试运行它时,“无法加载文件或程序集...”对话框(或其他任何内容,您知道我在说什么) 弹出并告诉我它无法加载我的 .dll,尽管我明确告诉它从 AssemblyResolve EventHandler 中的那个字节数组加载它。
如果这是之前已经回答过的问题,我很抱歉。看推荐的类似问题,不过我看不到这个问题的答案。
我能看到的唯一可能相关的是“C# 不允许我从字节加载,除非我处于高安全性上下文中。”如果有人知道什么,请你确认/否认这个说法,并告诉我什么是“高安全上下文”?我承认,我对复杂的事情一窍不通。 :)

提前感谢您的时间和回答!

最佳答案

Assembly 是托管 dll 的另一个名称 - native dll 不会在 AssemblyResolve 位 afaik 中结束。我不知道除了在启动时将嵌入式 dll 保存到磁盘之外是否还有其他选择,但我还没有找到告诉操作系统(负责加载非托管 dll)如何找到嵌入式 dll 的选项。

关于c# - 读取嵌入式程序集 (.dll) 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11285782/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com