【问题标题】:Loading DLLs from a folder, C# windows form project从文件夹加载 DLL,C# windows 窗体项目
【发布时间】:2012-02-13 16:47:55
【问题描述】:

好吧,我在另一个项目中看到了这一点,该项目也使用 Windows 窗体,我只是好奇它是如何完成的。 基本上我要问的是:我有 2 个 Windows 窗体项目,目前两者都是分开的,但我想将它们合并到彼此中。其中一个重要方面是如何将第二个项目加载到第一个项目中。所以我将我的借调项目构建为 .dll 文件。 然后我想将该 .dll 文件放入项目内的文件夹中,然后能够搜索文件夹中的任何 .dll 并加载它们。

所以我知道我可以通过将我的第二个项目中的 .dll 文件添加到第一个项目的引用中来做到这一点,但我特别想知道如果没有这个也可以做到吗? 所以在我的第一个项目中,我只能说; “搜索“DirectoryName”,如果该文件夹中有任何 .dll 文件,加载它们,并将它们添加到用户(即我)可以看到并希望使用的项目列表中。”

【问题讨论】:

    标签: c# winforms dll


    【解决方案1】:

    您可能有兴趣使用Managed Entity Framework 来实现此目的。

    或者,您可以使用 Assembly.LoadFrom(),如 described here

    【讨论】:

      【解决方案2】:

      您所寻找的可以通过使用称为Reflection的机制来实现

      反射允许您将程序集动态加载到您的应用程序中。

      你需要的类叫做Assembly,它有几个有用的方法来加载程序集:

      LoadFile、LoadFrom 等等。

      这是在给定路径加载程序集的代码示例:

      string path = @"D:\Folder\MyDll.dll";
      Assembly assembly = Assembly.LoadFrom(path);
      

      一旦您加载了一个程序集并引用了一个程序集对象,您就可以创建在其中定义的对象,调用它们的方法等等。

      更多资源可以在这里找到:Dynamically loading and using Types

      【讨论】:

      • 感谢您的回答:),非常有帮助!
      【解决方案3】:

      这里有一些有用的链接。

      在 SO 上提问:herehere 外部博客example

      基本上,您需要加载库、枚举类型并使用Activator.CreateInstance() 创建一个新对象。 为您需要与之交互的类提供接口也会在这里为您提供帮助

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多