2016-12-06 60 views
0

我想寫一個利用例如JSON .NET。假設我使用JSON .NET的8.0版本。當我分發我的庫時,任何使用它的人都必須使用相同版本的JSON .NET,並且它將與他們已經使用的任何版本相沖突。如何處理庫依賴版本?

我可以將我的庫的序列化部分分離成單獨的NuGet包,但這仍然取決於特定的版本。

我該如何構建我的庫,以便它可以提供開箱即用的序列化功能,但不會限制第三方包的客戶端代碼?這種事情有沒有現有的模式?

+0

您明確提供了一個可接受的版本範圍,以滿足您的庫的約束,或提供最低要求的版本。如果可能的話,你永遠不會想要發佈一個NuGet包來依賴單個版本。你當然不應該把JSON.NET捆綁到你的包中。您應該將其列爲依賴項,並允許使用者提供所需的依賴項。 –

+0

你能詳細說明一下嗎?如果它是一個依賴項,那麼會有一個對它的引用。 – Gigi

回答

1

其實,你的假設並不完全正確。其他版本的依賴項可以使用。在.NET中,我們使用assembly unification來完成此操作。從本質上講,最終用戶的配置文件可以寫成「當代碼需要版本8.0時,可以使用9.0」。大多數情況下,新代碼被寫入爲反向兼容。

最終,你不能強調它。與領土一起來。

+0

彙編重定向並不是最安全的選擇。圖書館完全可以在主要版本之間完全改變它們的API。 – Gigi