如何使用Assembly类运行.exe文件

时间:2014-04-19 19:01:18

标签: c# class .net-assembly

我想用Assembly类运行我的exe文件。这是我的代码

Assembly as = Assembly.LoadFile("path");
as.EntryPoint.Invoke(null,null);

错误:

  

参数计数不匹配。

2 个答案:

答案 0 :(得分:3)

如果它是本机exe - 使用Process.Start,如果它是托管的(即使用C#创建),则需要加载程序集,而不是通过反射调用Main

原生exe:

  Process.Start("IExplore.exe");

看起来您已经管理了程序集,并且您已经知道Main入口点(通过Assembly.EntryPoint属性)。你需要确保它不是null(不太可能)并传递正确的参数。

Main个签名为static void Main(string[] args)static int Main(string[] args)static void Main(),因此您需要在null中传递Invoke并更正参数数量。如果Main没有参数 - 请使用new object[0]作为第二个参数,否则使用参数构造字符串数组,然后将其包装在new object[]{args}中。

Main接受参数但不对其执行任何操作的情况的示例:

Assembly as = Assembly.LoadFile(@"c:\temp\my.exe");   
as.EntryPoint.Invoke(null, new object[]{new string[0]});     

答案 1 :(得分:0)

如果要将可执行.NET程序集加载到自己的进程中,请使用AppDomain.ExecuteAssembly

int exitCode = AppDomain.Current.ExecuteAssembly("path");

如果你有程序集名称而不是路径,还有ExecuteAssemblyByName