2014-01-09 128 views
0

我正在開發API類庫,我需要使用一些外部庫,例如log4net,統一等。當我參考這些庫時,我的API客戶端遇到引用與其他版本相同庫的問題。如何在不使用ILMERGE的情況下將此引用設爲「私有」C#類庫依賴關係衝突

回答

0

沒有像'私人引用'這樣的事情。
.NET運行庫只會將任何程序集加載到應用程序的域中,並將其按名稱而不是版本進行區分。因此,您需要確保所有合併代碼實際上使用某個庫的相同版本,或者允許使用Assembly Version Redirects的不同版本(通過app.config中的<bindingRedirect>元素)。

+0

我有log4net合併在DLL和引用兄弟與這個相同版本的DLL。 vs無法理解ILog的類型(來自哪個程序集)。可以重定向嗎? – deeptowncitizen

+0

您不應該這樣做:將第三方庫合併到程序集中,並引用另一個程序集的另一個版本的庫。這是非常冗餘和糟糕的設計。但是,如果你絕對必須的話,你可以嘗試完全限定'ILog'事件或定義一個適當的'namespace'別名。 –

+0

我使用的2個外部dll因爲合併黑客而互相沖突的問題,這是specflow項目,它引用了這個dll。我不能改變任何東西%) – deeptowncitizen