none
关于Assembly.Load()的提问 RRS feed

  • 常规讨论

  •             string resourceName = "ConsoleApp1" + ".cmd.exe";//内嵌资源名称
                Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(resourceName);//内嵌资源转换成stream
                byte[] buffer = new byte[stream.Length];//资源数据缓存数组
                stream.Read(buffer, 0, (int)stream.Length);//读取数据到缓存数组
                Assembly asm = Assembly.Load(buffer); //加载数据
                MethodInfo info = asm.EntryPoint;//获取程序入口点
                info.Invoke(null, null);//运行

    这段代码我运行到下面这条语句的时候抛出错误,请问我该怎么解决。其中cmd.exe是我从“C:\WINDOWS\system32”目录下嵌入到程序资源测试效果的。我测试嵌入C#开发的程序能正常运行,但是嵌入其他语言开发的程序就会出现以下报错

    Assembly asm = Assembly.Load(buffer); //加载数据

    抛出的错误内容如下:

    System.BadImageFormatException:“未能加载文件或程序集“278528 bytes loaded from ConsoleApp1, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null”或它的某一个依赖项。试图加载格式不正确的程序。”

    内部异常

    BadImageFormatException: IL 格式不正确。

    (我尝试过X86模式运行,但是没有解决问题)


    2019年5月29日 9:50