繁体   English   中英

加载C#dll并找到入口点

[英]Load C# dll and find entry point

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

我已使用以下代码加载库

    string str = @"D:\MyDLL.dll";
    str = Path.GetFullPath(str);
    Assembly assembly = Assembly.LoadFile(str);

一种方法是

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);

我建议在此过程中涉及一个单独的appdomain。 但这不是必需的。

编辑:

从下面的辩论中摘录。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM