C# 汇编到字节

C# 汇编到字节,c#,.net,assemblies,C#,.net,Assemblies,我的场景-我正在尝试将程序集文件从服务器发送到客户端(通过直接TCP连接)。但主要的问题是-我如何将这个程序集转换为字节,以使它可以随时传输? 我用了以下方法: byte[] dllAsArray; using (MemoryStream stream = new MemoryStream()) { BinaryFormatter formatter = new BinaryFormatter(); formatter.Serialize(stream,loCompiled.Co

我的场景-我正在尝试将程序集文件从服务器发送到客户端(通过直接TCP连接)。但主要的问题是-我如何将这个程序集转换为字节,以使它可以随时传输? 我用了以下方法:

byte[] dllAsArray;
using (MemoryStream stream = new MemoryStream())
{
    BinaryFormatter formatter = new BinaryFormatter();
    formatter.Serialize(stream,loCompiled.CompiledAssembly);
    dllAsArray = stream.ToArray();
}
但当我使用-

Assembly assembly = Assembly.Load(dllAsArray);
我有个例外-

无法加载文件或程序集“从代码生成器服务器加载165字节,版本=1.0.0.0,区域性=中性,PublicKeyToken=null”或其依赖项之一。试图加载格式不正确的程序。 请帮忙


这不就是原始dll内容吗,就好像您已将其保存到磁盘一样?i、 e.等效于
文件.ReadAllBytes

听起来好像dll已经生成了-你能把它保存在任何地方吗?(临时区域、内存流等)


编辑由于您似乎在使用代码dom,请尝试使用
路径来组装
(在编译器结果上)和
文件。ReadAllBytes
(或类似的流机制)。

只需通过ReadAllBytes加载文件,然后通过WriteAllBytes写入即可。字节[]可以通过网络传输

// Transfer to byte[]
byte[] data = System.IO.File.ReadAllBytes(@"C:\ClassLibaryOne.dll");

// Write to file again
File.WriteAllBytes(@"C:\ClassLibaryOne.dll", data);
编辑:如果使用AssemblyBuilder创建dll,则可以使用.Save(文件名)将其保存到以前的硬盘中

AssemblyBuilder a = ...
a.Save("C:\ClassLibaryTwo.dll);