我得到了一些c#中的代码。它唯一做的就是解压嵌入程序集并执行它。我想知道如何将这个执行程序集写入文件以恢复它。
public static object RunIt()
{
Type[] types = DeliverUs.Assembly.GetTypes();
for (int i = 0; i < types.Length; i++)
{
Type type = types[i];
MethodInfo[] methods = type.GetMethods();
for (int j = 0; j < methods.Length; j++)
{
MethodInfo methodInfo = methods[j];
if (methodInfo.Name == DeliverUs.Name)
{
return methodInfo.Invoke(null, DeliverUs.Values);
}
}
}
return null;
}
我已经尝试过AssemblyBuilder没有成功。我该如何解决这个问题并将程序集写入本地文件?的MemoryStream?
答案 0 :(得分:0)
您可以通过BinaryFormatter使用二进制序列化序列化程序集。您应该能够通过文件中的二进制序列化存储完整的反射汇编对象图。以下是使用二进制序列化编写/读取汇编的两个快速示例。
将程序集序列化为文件:
var assembly = Assembly.GetExecutingAssembly();
var formatter = new BinaryFormatter();
using (var file = File.OpenWrite("assembly.bin"))
{
formatter.Serialize(file, assembly);
file.Close();
}
从文件反序列化程序集
Assembly assembly;
var formatter = new BinaryFormatter();
using (var file = File.OpenRead("assembly.bin"))
{
assembly = (Assembly)formatter.Deserialize(file);
file.Close();
}