将控制台程序转换为dll并保留参数

时间:2013-11-20 20:05:33

标签: c# dll

我有一个曾经是控制台程序的DLL,它仍然有代码使用“static Main(string [] args)”有没有办法在加载DLL时传递args?

我正在使用

Assembly assembly = Assembly.LoadFrom("App.dll");
Type type = assembly.GetType("App.LoadFile");
var instance = Activator.CreateInstance(type,new string[] { filepath });

1 个答案:

答案 0 :(得分:2)

仅在第二个程序中加载程序集时不会调用Main方法。您只需要在上面的Main上调用type方法。

以下是如何从代码中调用静态Main方法...

var assembly = Assembly.LoadFrom("App.dll");
var type = assembly.GetType("App.LoadFile");

var args = new string[] { filepath };

var main = type.GetMethod("Main", 
    System.Reflection.BindingFlags.Static
    | System.Reflection.BindingFlags.NonPublic
    | System.Reflection.BindingFlags.InvokeMethod
    );

main.Invoke(null, new object[] { args });