gpt4 book ai didi

c# - 按字节加载程序集会丢失位置

转载 作者:可可西里 更新时间:2023-11-01 07:57:12 24 4
gpt4 key购买 nike

我想通过以下方式加载程序集

var loadedAssembly = Assembly.Load(File.ContentsAsBytes);

File.ContentAsBytes 通过以下方法将 dll 作为 byte[] 返回

System.IO.File.ReadAllBytes("dll 位置");

问题是加载的程序集 (loadedAssembly) 丢失了它的物理位置

  • loadedAssembly.CodeBase - 设置为加载它的程序集(这是不正确的)
  • loadedAssembly.Location - 为空

有没有办法从 byte[] 加载并获得与 Assembly.LoadFile 类似的结果,因为我需要结果与 一起使用AppDomain.CurrentDomain.AssemblyResolve

最佳答案

字节数组byte[] 只是内存中的字节流。它与任何文件都没有关联。该字节数组可以从文件中读取、从 Web 服务器下载或由随机数生成器自发创建。没有“随之而来”的额外数据。

如果要维护最初读取字节数组的文件位置,则必须在另一个变量中单独维护该数据。无法将额外数据“附加”到 byte[] 变量。

当您使用 Assembly.Load 将字节数组作为程序集加载时,它无法知道该字节数组来自何处,因为没有向 提供额外的数据加载函数。

作为解决方法,有没有一种方法可以将字节数组保存到临时文件中,使用 Assembly.LoadFile 为您提供所需的数据并链接 Location 回到原来的字节数组?

关于c# - 按字节加载程序集会丢失位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16597138/

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