是否可以以字节数组或流的形式获取加载的 .net 程序集的内容?

2024-02-13

是否可以以字节数组或流的形式获取加载的 .net 程序集的内容?

我想做的是类似的事情(当然真实的场景要复杂得多,所以仅仅存储缓冲区不是一个选择)。

byte[] bytes = GetTheBytes();
Assembly asm = Assembly.Load(bytes);
byte[] bytes2 = GetAssemblyAsByteArray(asm);
Assert.IsTrue(bytes.SequenceEqual(bytes2));

我需要知道如何实现 GetAssemblyAsByteArray 函数。

编辑: File.ReadAllBytes() 的解决方案不够好,因为程序集可能是动态的,不,我无法(轻松)访问源代码(它是自动生成的,我不想跟踪它) 。序列化注释可能有效,但我不知道到底如何使用它。我的最终目标是将程序集作为 /reference 选项传递给 csc.exe,并且我认为无论程序集是否动态,其工作等效的唯一方法是将所有需要的程序集保存到临时文件。


您可以使用:

byte[] bytes = File.ReadAllBytes(assembly.Location);

在已经加载的程序集上,它会给你一个byte[]适合传递给Assembly.Load(byte[]) http://msdn.microsoft.com/en-us/library/h538bck7.aspx.

However,如果程序集最初是使用Load(byte[])方法,其Location属性将是一个空字符串,这意味着此方法将不起作用。

看起来没有一种方法可以做你想做的事all组件。明显的解决方法是存储原始数据byte[]当你第一次得到它的时候。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

是否可以以字节数组或流的形式获取加载的 .net 程序集的内容? 的相关文章

  • C# 可以扩展数组吗?

    我习惯向 IEnumerable 等外部类添加方法 但是我们可以在 C 中扩展数组吗 我计划向数组添加一个方法 将其转换为 IEnumerable 即使它是多维的 不相关如何在 C 中扩展数组 https stackoverflow com
  • 转换BitmapImage后内存未释放

    我遇到以下 C 测试 代码的问题 public static void TestBitmap2ByteArray BitmapImage bitmap JpegBitmapEncoder encoder new JpegBitmapEnco
  • int -> int list 与类型 int -> IEnumerable<'a> 不兼容

    Given open System Linq 这是一个可以接受的表达方式 2 3 4 SelectMany fun n gt 1 n 但这不是 2 3 4 SelectMany fun n gt 1 n 错误消息显示 int gt int
  • 使用 ITextsharp 将 Html 导出为 PDF

    我已经尝试了下面的代码 我也遇到了错误 我正在使用最新的 DLL String strSelectUserListBuilder h1 My First Heading h1 p My first paragraph p String ht
  • 在 GAC 中注册 dll

    我需要向 Windows 2003 服务器上的 GAC 添加一个 dll 服务器未安装 Visual Studio 我在 Windows 2003 Server 中没有找到 Gacutil exe 在 Windows 2003 Server
  • 有没有一种简单的方法来使用InternalsVisibleToAttribute?

    我有一个 C 项目和一个测试项目 其中包含主项目的单元测试 我想要可测试的internal方法 我想在没有 Visual Studio 测试项目中可以拥有的神奇 Accessor 对象的情况下测试它们 我想用InternalsVisible
  • 改变方法中的结构

    如何更改外部方法中的结构 public void ChangeStruct MyStruct myStruct myStruct field1 10 return 当我在该方法之后将结构传递给 ChangeStruct 方法时 我希望更改
  • 去除字符串的最佳方法是什么?

    我需要具有最佳性能的想法来删除 过滤字符串 I have string Input view 512 3 159 删除 view 和 的最佳性能方法是什么 和引号 我可以做这个 Input Input Replace view Replac
  • 字典 API(词汇)[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有人知道一个好的 NET 字典 API 吗 我对含义不感兴趣 而是我需要能够以多种不同的方式查询单词 返
  • System.Drawing.Image.Save 抛出ExternalException:GDI 中发生一般错误

    我有一个函数 它需要一个位图 复制它的一部分并将其保存为 8bpp tiff 结果图像的文件名是唯一的并且文件不存在 程序有权写入目标文件夹 void CropImage Bitmap map Bitmap croped new Bitma
  • IL 的仿制药?

    是否可以在 IL 生成器中使用泛型 DynamicMethod method new DynamicMethod GetStuff typeof int new Type typeof object ILGenerator il metho
  • 运行 t4 脚本作为 resx 文件的自定义工具

    我有一个资源文件MyResource resx 我想改变MyResource Designer cs文件生成 我有一个 t4 脚本 它接受 resx 文件作为输入并给出结果转换 但是 我必须手动运行此 t4 才能使其工作 我看到 resx
  • 如何在没有 Visual Studio 的情况下将新文件添加到 .csproj 文件

    如何添加新文件到 csproj从命令提示符 我认为没有任何工具可以响应命令行上的 add project 命令来执行此操作 但我认为您可以幸运地创建一个程序 脚本来直接操作 csproj 文件的 XML 内容 csproj 文件的结构如下所
  • EasyNetQ 模型关闭

    我使用 EasyNetQ 实现了一个简单的 RabbitMQ 客户端 连接后 我收到一条通知 队列模型关闭 这是我的代码 var bus RabbitHutch CreateBus String Format host 0 hostName
  • 如何在 VS2017/2015 中打开 .xproj 文件

    我有一个带有扩展名的 NET core 项目 xproj 当我在VS 2017中打开项目时 项目文件 xproj migrated to csproj 如何打开 xproj 文件 Visual Studio 2017 2015 我需要安装任
  • C# - 方法必须有返回类型

    我在调用 C 中的方法时遇到问题 不断收到消息 方法 计算 必须有返回类型 using System Diagnostics namespace WindowsFormsApplication1 public partial class F
  • 当我使用 Image.FromFile() 时 FileNotFound

    我在这种情况下使用 Image FromFile string 方法 using System using System Collections Generic using System ComponentModel using Syste
  • 如何等待远程 .NET 调试器连接

    今天我遇到了一个问题 我需要远程调试程序 该程序是从另一个系统启动的 所以我真的没有机会在命令行上与它交互 不过我可以很容易地改变它的来源 我需要做的是让程序正常启动 然后等待我用调试器附加到它 我想不出一个让我快乐的方法 我确实发现了这个
  • 在一个数据访问层中处理多个连接字符串

    我有一个有趣的困境 我目前有一个数据访问层 它必须与多个域一起使用 并且每个域都有多个数据库存储库 具体取决于所调用的存储过程 目前 我只需使用 SWITCH 语句来确定应用程序正在运行的计算机 并从 Web config 返回适当的连接字
  • 从经典 ASP 调用 .Net C# DLL 方法

    我正在开发一个经典的 asp 项目 该项目需要将字符串发送到 DLL DLL 会将其序列化并发送到 Zebra 热敏打印机 我已经构建了我的 DLL 并使用它注册了regasm其次是 代码库这使得 IIS 能够识别它 虽然我可以设置我的对象

随机推荐