加载c# dll并找到入口点

本文关键字:入口 dll 加载 | 更新日期: 2023-09-27 18:18:55

如何加载c# dll并从中找到入口点?

我使用了以下代码来加载库
    string str = @"D:'MyDLL.dll";
    str = Path.GetFullPath(str);
    Assembly assembly = Assembly.LoadFile(str);

加载c# dll并找到入口点

一种方法是

string str = @"D:'MyDLL.dll";
str = Path.GetFullPath(str);
Assembly assembly = Assembly.LoadFile(str);
string args = {"a", "b"}; //command line args that you need to pass
MethodInfo publicStaticVoidMain = assembly.EntryPoint;
publicStaticVoidMain.Invoke(null, args);

我建议在这个过程中包含一个单独的应用域。但这是不必要的。

编辑:

接下来的辩论节选如下:

  1. 有不同类型的dll。您必须确切地知道您谈论的是哪种类型的DLL。. net dll与WIN32 dll不同。
  2. 入口点通常是在dll中定义的方法。
  3. 。net代码最适合于。net dll。
  4. 如果一个。net dll没有入口点。assembly.EntryPoint返回null。如果有,那么你可以在入口点调用invoke并进入它。
  5. 。net exe的行为也类似于。net DLL(甚至可以重命名并使其看起来像DLL)。EXE(即使已重命名)肯定包含该入口点。