【问题标题】:Where is DLL entry point in C#?C#中的DLL入口点在哪里?
【发布时间】:2013-04-18 17:16:45
【问题描述】:

我目前正在尝试在另一个 dll 中嵌入一个 DLL(作为资源),但我遇到了一个小问题。

DLL 入口点在哪里? 我的意思是,在 WPF 中我会有一个 app.xaml.cs 文件,但是如果我的项目本身就是一个库呢? ?

比方说,我应该在哪里编程AppDomain.CurrentDomain.AssemblyResolve,以便它从资源中选择它?我没有一个程序类来做到这一点。

【问题讨论】:

    标签: c# dll embed .net-assembly


    【解决方案1】:

    DLL 没有入口点。
    而是根据需要加载和使用类。

    在使用来自其他程序集的任何类型之前,您应该在静态初始化程序中简单地调用 Assembly.Load,而不是处理 AssemblyResolve

    【讨论】:

    • 基本上我需要为每个可能有问题的类创建一个静态初始化器,对吗?关于 AssemblyResolve,我可以在将要使用 dll(其中包含另一个 dll)的项目上处理它吗?这样我就可以确切地知道程序从哪里开始,等等
    • @Apidcloud:是的。他们都可以调用一个通用的加载器方法。是的;这也行。
    • 我尝试了您的建议,但在尝试使用其中一个 dll 类时引发了此问题:“MyClass”的类型初始化程序引发了异常;这是否意味着静态构造函数引发了异常?
    • 是的。什么是 InnerException?
    • 似乎是我嵌入 dll 的方式有问题...但现在它引发了之前的异常:无法加载文件或程序集..您可以看看静态构造函数吗?使用 (var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("TestProject.testdll.dll")) { byte[] assemblyData = new byte[stream.Length];流.Read(assemblyData, 0, assemblyData.Length);装配.加载(装配数据); }
    猜你喜欢
    • 1970-01-01
    • 2020-02-26
    • 1970-01-01
    • 2012-03-03
    • 2022-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-02
    相关资源
    最近更新 更多