2016-12-06 19 views
0

Ich möchte eine Bibliothek schreiben, die Funktionalität aus z. JSON .NET. Nehmen wir an, ich verwende die Version 8.0 von JSON .NET. Wenn ich meine Bibliothek vertreibe, muss jeder, der sie benutzt, die gleiche Version von JSON .NET verwenden, und es wird zu Konflikten mit den Versionen kommen, die sie bereits verwenden.Wie mit Bibliotheksabhängigkeitsversionen umgehen?

Ich könnte den Serialisierungsteil meiner Bibliothek in ein separates NuGet-Paket isolieren, aber das wäre immer noch abhängig von der jeweiligen Version.

Wie kann ich meine Bibliothek so erstellen, dass sie solche Serialisierungsfunktionen sofort bereitstellt und den Client-Code nicht in Bezug auf Pakete von Drittanbietern einschränkt? Gibt es irgendwelche Muster für diese Art von Dingen?

+0

Sie geben explizit einen akzeptablen Bereich von Versionen an, der die Einschränkung Ihrer Bibliothek erfüllt, oder stellen Sie eine mindestens erforderliche Version bereit. Sie möchten niemals ein NuGet-Paket mit einer Abhängigkeit von einer einzigen Version versenden, wenn es überhaupt möglich ist. Und Sie sollten JSON.NET sicher nicht in Ihr Paket einbinden. Sie sollten es als Abhängigkeit auflisten und es dem Verbraucher ermöglichen, die erforderliche Abhängigkeit bereitzustellen. –

+0

Können Sie das näher ausführen? Wenn es sich um eine Abhängigkeit handelt, wird es einen Verweis darauf geben. – Gigi

Antwort

1

Eigentlich ist Ihre Annahme nicht genau richtig. Andere Versionen von Abhängigkeiten können verwendet werden. In .NET verwenden wir dazu assembly unification. Im Wesentlichen kann die Konfigurationsdatei des Endbenutzers so geschrieben werden, dass "wenn der Code Version 8.0 benötigt, ist es in Ordnung, 9.0 zu verwenden". Und die meiste Zeit wird neuerer Code rückwärtskompatibel geschrieben.

Letztendlich können Sie nicht darüber stressen. Kommt mit dem Territorium.

+0

Assembly Redirects sind nicht gerade die sicherste Wette. Bibliotheken können ihre API vollständig zwischen den Hauptversionen ändern. – Gigi