Manchmal kommt es vor, dass einem NuGet Package als .nupkg Datei vorliegen, welche man gerne in sein bestehendes Projekt integrieren möchte. Dies kann zum Beispiel dann der Fall sein, wenn man seine eigenen NuGet Packages erstellt, aber diese nicht veröffentlichen möchte oder bei Preview-Versionen, welche nur ausgewählte Personen testen sollen. In diesem Beitrag möchte ich nun zwei verschiedene Wege aufzeigen, wie man mit sehr wenig Aufwand lokale .nupkg Dateien in sein bestehendes Projekt integrieren kann. Dabei werde ich zwei verschiedene Ansätze aufzeigen.

Zunächst öffnen wir Visual Studio und öffnen dann die Einstellungen von NuGet über ToolsNuGet Package ManagerPackage Manager Settings. Anschließend wird uns der folgende Dialog angezeigt.

Hier müssen wir nun in den Tab Package Sources wechseln.

Über den großen Plus-Button im oberen rechten Bereich fügen wir nun neben der bestehenden nuget.org Quelle eine weitere Quelle hinzu. Hier können wir einen beliebigen Namen vergeben und als Source geben wir den Pfad zu einem lokalen Ordner an, wo wir die .nupkg Dateien gespeichert haben an.

Wenn wir nun in unser Projekt wechseln und NuGet Packages hinzufügen wollen, dann können wir jetzt die Package source ändern und auf unsere neu hinzugefügte Quelle wechseln. Anschließend werden uns die lokalen Packages direkt angezeigt.

Damit sind wir jetzt bereits in der Lage lokale NuGet Packages zu verwenden und entsprechend Projekte einzusetzen. Allerdings gibt es auch einen Nachteil, denn wenn man im Team arbeitet, müssen alle Team-Mitglieder diese Einstellungen vorgenommen haben und entsprechend auch über die .nupkg Dateien verfügen.

Daher gibt es noch eine zweite Variante. Bei dieser werden die .nupkg mit im Code eingecheckt und der Pfad wird relativ zum Projekt angegeben, so dass jedes Team-Mitglied automatisch die richtige Version auf seinem Rechner hat und sich auch sonst um keine weiteren Einstellungen kümmern muss.

Hierzu legen wir zunächst unser Visual Studio Projekt an. In meinem Fall habe ich dann auf den gleichen Ebene, wie die .sln Datei einen Ordner lib angelegt. In diesen Ordner habe ich dann die notwendigen .nuget Dateien kopiert bzw. abgelegt. Hierdurch können die Dateien jetzt zum Beispiel auch eingecheckt werden und stehen allen Entwicklern zur Verfügung. Im nächsten Schritte legen wir auf der .sln-Ebene eine Datei nuget.config an. Der Inhalt dieser Datei sieht dann wie folgt aus:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <packageSources>
        <add key="LocalNuGetSource" value="lib" />
    </packageSources>
</configuration>

Wie man dem Code entnehmen kann, können wir auch hier im key-Attribut einen beliebigen Namen angeben und im value-Attribut folgt dann der Pfad zu den Packages, welches in meinem Fall einfach der lib-Ordner auf gleicher Ebene ist. Anschließend steht uns ebenfalls ein neuer Eintrag im NuGet Package Manager zur Verfügung und wir können die lokalen Packages hinzufügen.

Somit sind wir jetzt in der Lage lokale NuGet Packages unseren Projekten hinzuzufügen und diese bequem über den NuGet Package Manager zu verwalten.