是否可以以字节数组或流的形式获取加载的 .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(使用前将#替换为@)