我想用Assembly类运行我的exe文件。这是我的代码
Assembly as = Assembly.LoadFile("path");
as.EntryPoint.Invoke(null,null);
错误:
参数计数不匹配。
答案 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
。