簡體   English   中英

從C#Windows窗體項目文件夾中加載DLL

[英]Loading DLLs from a folder, C# windows form project

好吧,我已經看到這是在另一個使用Windows窗體的項目中完成的,我只是很好奇它的完成方式。 基本上是我要問的一個例子:我有2個Windows窗體項目,目前這兩個項目是分開的,但是我想將它們相互合並。 其中一個重要方面是如何將第二個項目加載到第一個項目中。 因此,我已經將借調的項目構建為.dll文件。 然后,我想將該.dll文件放入項目內的文件夾中,然后能夠在該文件夾中搜索任何.dll並加載它們。

所以我知道我可以通過將第二個項目中的.dll文件添加到第一個項目的引用中來執行此操作,但是我特別想知道如果沒有此操作是否可以完成? 這樣,在我的第一個項目中,我可以說: “搜索“ DirectoryName”,如果該文件夾中有任何.dll文件,請加載它們,然后將它們添加到項目中的列表中,以便我(即我)用戶看到並希望使用。

您正在尋找的東西可以通過使用稱為反射的機制來實現

通過反射,您可以將程序集動態加載到應用程序中。

您需要的類稱為Assembly ,它具有幾種用於加載程序集的有用方法:

LoadFile,LoadFrom等。

這是在給定路徑下加載程序集的代碼示例:

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

一旦加載了程序集並引用了Assembly對象,就可以創建在其中定義的對象,調用其方法等。

在這里可以找到更多資源: 動態加載和使用類型

您可能對使用托管實體框架實現此目標感興趣。

或者,您可以使用Assembly.LoadFrom(),如此處所述

這里是一些有用的鏈接。

在SO上提問: 這里這里外部博客示例

基本上,您將需要加載庫,枚舉類型並使用Activator.CreateInstance()創建新對象。 為您需要與之交互的類提供接口也將為您提供幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM