相关疑难解决方法(0)

如何将程序集保存到磁盘?

如何将程序集保存到文件?即我的意思不是动态程序集,而是“正常”的内存程序集。

Assembly[] asslist = AppDomain.CurrentDomain.GetAssemblies();
foreach (Assembly ass1 in asslist)
{
    // How to save?
}
Run Code Online (Sandbox Code Playgroud)

当应用程序从资源加载某些引用的程序集时,可能会发生这种情况。我想将它们保存到磁盘。

不可能从资源中提取程序集,因为它们在那里加密。

.net disk save .net-assembly

6
推荐指数
1
解决办法
2311
查看次数

如何将受管.NET程序集从内存中保存为EXE/DLL文件

我想知道它是否尽可能,如果是这样 - 如何保存动态加载的.net程序集(它是从字节数组而不是文件加载)到磁盘上的文件(exe/dll取决于组件)和能够直接使用它(即,如果它是EXE,它包含所有exe头和可运或者至少是"可反射").

加载的程序集实际上也完全按照它们出现在文件中的方式存储在内存中,即所有PE EXE头文件,资源等,即内存中的exe/dll文件,或者它们以不同方式存储在内存中,因此它不会可以将一些内存区域保存为dll/exe .net程序集吗?也就是说,如果我可以使用图像中的类比:您可以将jpeg文件作为位图加载到内存中,其中表示内存中图像的实际字节将与表示jpeg文件的实际字节完全不同.加载组件也一样吗?

最后,我如何获得程序集实际位于进程内存中的内存地址(指针)?

只是为了澄清:我无法访问通过Assembly.Load()加载程序集的初始字节数组.

这是一个相关的问题,但是从答案中不清楚是否可能有一种方法将通过字节数组加载的程序集从内存转储到磁盘上的文件.

谢谢.

.net reflection .net-assembly

5
推荐指数
1
解决办法
1907
查看次数

如何将程序集对象序列化/反序列化到字节数组或从字节数组反序列化

假设通过编译代码字符串在内存中创建(可执行)程序集。然后我想将这个程序集对象序列化为一个字节数组,然后将其存储在数据库中。然后我想从数据库中检索字节数组并将字节数组反序列化回程序集对象,然后调用程序集的入口点。

起初,我只是尝试像处理 .net 中的任何其他简单对象一样执行此序列化,但显然这不适用于程序集对象。程序集对象包含一个名为 GetObjectData 的方法,该方法获取重新实例化程序集所需的序列化数据。所以我对如何将所有这些拼凑成我的场景有些困惑。

答案只需要展示如何获取程序集对象,将其转换为字节数组,将其转换回程序集,然后在反序列化的程序集上执行入口方法。

c# serialization system.reflection deserialization

4
推荐指数
1
解决办法
6949
查看次数