0
System.Resources.ResourceManager ResManager
    = new System.Resources.ResourceManager(
        "derp",
        System.Reflection.Assembly.GetExecutingAssembly());

byte[] cmBytes
    = System.Convert.FromBase64String((string)ResManager.GetObject("cFile"));

/*BinaryWriter bw1
      = new BinaryWriter(new FileStream("test.exe", FileMode.Create));
  bw1.Write(cmBytes);
  bw1.Flush();
  bw1.Close();*/

Assembly asm = Assembly.Load(cmBytes);
MethodInfo mi = asm.EntryPoint;
object go = asm.CreateInstance(mi.Name);
mi.Invoke(go, null);

错误指向mi.Invoke(go, null),我被难住了。

4

1 回答 1

0

在这种情况下,入口点需要参数 - 正如异常所暗示的那样(可能是字符串列表),所以显然你不能在没有参数的情况下调用它(null作为第二个参数)。尝试:

mi.Invoke(go, new object[] { new string[0] } );

请注意,这当然仅适用于具有接受字符串列表的入口点的程序集。根据您要运行的程序集的类型,您可能需要为此添加更多逻辑。你也可以static void Main()在程序集中,所以你的版本可以工作。

于 2013-10-08T11:40:50.420 回答