簡體   English   中英

.NET自動包含程序集

[英].NET Automatic include of assembly

不知道是否可以做到這一點,但是無論如何都可以進行。

我已經編寫了一個N層應用程序,它將由最終用戶實現。 我只想在一個名為Myapp.client的項目中公開1個類。 現在,我希望最終用戶在使用該應用程序時,只需要在其項目中包括此DLL。 我遇到的問題是客戶端項目(dll)在我的解決方案中顯然引用了其他項目。 僅通過包含客戶端dll進行測試時,我總是會遇到這種類型的編譯錯誤(這是正常現象,據我所知):

錯誤1類型'XXXX.DataObjects.Someclass'是在未引用的程序集中定義的。 您必須添加對程序集'XXXX.DataObjects,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = 8eefc54a8e08e7cc'的引用。

當有人包含客戶端dll時,有沒有辦法自動包含這些引用? 還是我必須重寫應用程序才能將所有內容包含在客戶端dll中?

謝謝。

在我看來,這聽起來像是一個插件架構。 理想情況下,插件實現者應該實現的dll應該包含一個干凈的接口。 當然,該接口可能還包含一些屬於您的代碼的類型。 您必須以某種方式重構我們的體系結構,使這些類型也可以是接口,並且理想情況下可以是一個或幾個程序集。 然后,您只需要向客戶端提供插件接口程序集和其他苗條接口程序集即可。

順便說一句,您是否研究過MEF? 幾年前,這是一個CodePlex項目,但有一段時間了,它現在是.NET基礎的一部分。 它提供了分離此類架構的便捷方法。 鏈接您只需要使用[Export(...)][Import(...)]屬性並配置它的發現即可。 MEF還可以用作IoC /依賴注入框架。

如果您可以控制客戶端應用程序的構建方式,並且可以將丟失的程序集部署到客戶端,則可以在構建過程中自動解析引用

在其他情況下,您將不得不重寫主程序集以包括所有引用的代碼,或者使用ILMerge將多個程序集組合為一個。

暫無
暫無

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

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