2016-08-30 70 views
0

我想創建一個控制檯應用程序並將其添加到另一個類庫項目。所以我的類庫是可運行的應用程序。做c#類庫一個可運行的應用程序

enter image description here

namespace MyWorker.Host 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 

     } 
    } 

    public interface IConfiguration 
    { 
     void Configure(); 
    } 
} 

而且我加入我的MyWorker.Host作爲參考MyWorker.Client類庫項目。並將調試設置設置爲「啓動外部程序」。

enter image description here

現在我想找尋引用MyWorker.Host客戶端組件。我會找到實現了IConfiguration接口的類。

namespace MyWorker.Host 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      var implementations = AppDomain 
       .CurrentDomain 
       .GetAssemblies() 
       .SelectMany(assemly => assemly.GetTypes()) 
       .Where(t => !t.IsInterface) 
       .Where(t => typeof (IConfiguration).IsAssignableFrom(t)); 

      foreach (var assembly in implementations) 
      { 
       Console.WriteLine(assembly.FullName); 
      } 

      Console.Read(); 
     } 
    } 
} 

但寫入控制檯什麼

(如果我在MyWorker.Host添加concrate類寫入控制檯)。

+0

您無法運行類庫。它們只能被其他(可運行的)應用程序使用 – Liam

+0

您是否打算將引用添加到控制檯應用程序? '參考文獻>右鍵單擊>添加參考文獻>項目>解決方案'並選擇'類庫'。一個類庫沒有入口點,不能「運行」 – user3185569

+0

當然,它什麼都不寫。程序集「MyWorker.Client」未加載到應用程序域中 - 您需要先加載它。運行的可執行文件仍然只是「MyWorker.Host」,沒有任何魔法可以爲您加載DLL - 您需要設置構建依賴關係,複製這些DLL並根據需要顯式加載它們。 – Luaan

回答

0

我以前做過類似的事情,但必須通過DLL來尋找使用反射後實現你的接口類。當然,您需要一種通過該路徑的方式,這可以是可配置的,或者只需查看解決方案目錄中的所有子目錄等。

相關問題