Mit neueren Versionen von NuGet ist es möglich, ein Projekt so zu konfigurieren, dass NuGet-Pakete automatisch wiederhergestellt werden, sodass der packages
Ordner nicht in das Quellcode-Repository aufgenommen werden muss. Gut.
Dieser Befehl fügt jedoch einen neuen .nuget
Ordner hinzu und dort befindet sich eine Binärdatei, NuGet.exe. Dies kann auch automatisch von Visual Studio neu erstellt werden, sodass es nicht richtig erscheint, dies zur Versionskontrolle hinzuzufügen. Ohne diesen Ordner lädt Visual Studio die Lösung jedoch nicht einmal ordnungsgemäß.
Wie geht ihr damit um? .Nuget zur Quellcodeverwaltung hinzufügen? Führen Sie ein Befehlszeilenskript aus, bevor Sie die Lösung öffnen.
visual-studio
version-control
nuget
Borek Bernard
quelle
quelle
Antworten:
Dieser Beitrag ist alt, Sie sollten nicht mehr die NuGet-Paketwiederherstellung auf Lösungsebene verwenden. Ab Version 2.7+ gibt es im NuGet-Setup eine Option, um Pakete beim Erstellen automatisch wiederherzustellen. So kann der .nuget-Ordner gelöscht und die Option aus Ihren Projekten entfernt werden.
http://docs.nuget.org/docs/reference/package-restore
UPDATE: Mit der Veröffentlichung von NuGet 4.x und .NET Standard 2.0 können Sie bei Verwendung des neuen csproj-Formats jetzt Paketreferenzen verwenden und ironischerweise die Abhängigkeit von msbuild wieder herstellen, um Pakete wiederherzustellen. Jetzt sind Pakete jedoch ein erstklassiger Bürger von msbuild . Der obige Link erwähnt auch das
PackageReference
, aber die folgende Ankündigung beschreibt es besser:https://blog.nuget.org/20170316/NuGet-now-fully-integrated-into-MSBuild.html
Und die NuGet 4.x RTM-Ankündigung, die ironischerweise nicht so nützlich ist:
https://blog.nuget.org/20170308/Announcing-NuGet-4.0-RTM.html
UPDATE 2: Anscheinend können Sie mit VS2017 sogar Paketreferenzen mit klassischen csproj-Projekten verwenden, diese sind jedoch nicht mehr abwärtskompatibel, und es gab einige Probleme beim Wiederherstellen von Paketunterabhängigkeiten. Ich bin sicher, dass alles gelöst sein wird.
quelle
Tools > Extensions & Updates > Updates
.Die Antwort von @Richard Szalay ist richtig - Sie müssen nuget.exe nicht festlegen. Wenn Visual Studio aus bestimmten Gründen die Datei nuget.exe nicht automatisch herunterlädt, stellen Sie sicher, dass in der Datei Folgendes auf true festgelegt ist
nuget.targets
:Schließen Sie die VS-Lösung, öffnen Sie sie erneut und erstellen Sie sie. Visual Studio sollte nuget.exe jetzt automatisch herunterladen.
quelle
true
standardmäßig eingestellt ist?Laut diesem Thread sollte der .nuget-Ordner versioniert sein.
quelle
Sie müssen sich verpflichten
.nuget\nuget.targets
, aber nichtnuget.exe
. Die Ziele werden die exe herunterladen , wenn es nicht vorhanden ist , so lange wie Sie ändern ,DownloadNuGetExe
umtrue
in nuget.targetsquelle
Obwohl mir die Idee, Exe zur Quellcodeverwaltung hinzuzufügen, normalerweise nicht gefällt, würde ich vorschlagen, dass die Quellcodeverwaltung alles enthält, was zum Öffnen, Erstellen und Ausführen des Projekts erforderlich ist.
In diesem Fall scheint der Ordner .nuget eine erforderliche Abhängigkeit zu sein. Daher sollte es unter Quellcodeverwaltung sein.
Die einzige Frage, die Sie noch untersuchen müssen, ist, wie NuGet reagieren wird, wenn dieser Ordner als schreibgeschützt markiert ist. Dies wird TFS nach dem Einchecken tun.
Update: Ich habe etwas mehr darüber recherchiert, da ich NuGet noch nie benutzt habe. http://blog.davidebbo.com/2011/03/using-nuget-without-committing-packages.html
Ich würde vorschlagen, dass Sie NuGet wahrscheinlich zu einer Anforderung machen möchten, die auf jeder Entwicklerarbeitsstation installiert werden muss.
Außerdem sollten Sie die Batchdatei in die Quellcodeverwaltung einfügen, die erforderlich ist, um eine Workstation für die Bearbeitung des Projekts vorzubereiten. In der Batchdatei werden die Befehle ausgeführt, die zum Abrufen und Installieren der Abhängigkeitspakete erforderlich sind.
Darüber hinaus würde ich sagen, dass Sie NuGet direkt kontaktieren möchten, um sie zu fragen, wie genau dies funktionieren soll.
quelle
<RestorePackages>true</RestorePackages>
in der * .csproj-Datei genügend Informationen für Visual Studio enthalten sein sollten, aber vielleicht ist dies nicht der Fall.Jetzt, da Nuget die Paketwiederherstellung unterstützt, sehen wir uns das genauer an.
Wir verwenden Subversion für die Quellcodeverwaltung, und meine ersten Gedanken sind, dass
.nuget
dies zu unserem Repository hinzugefügt werden sollte, aber mit svn: externals hinzugefügt werden sollte, damit es auf einen einzelnen Speicherort verweist.Auf diese Weise können wir automatisch neue Versionen an alle Entwickler und Projekte senden. Für Projekte in Release-Zweigen anstelle von HEAD können wir die Revision der Referenz svn: externals angeben, wenn wir nuget in Ruhe lassen möchten.
Wir haben viele Projekte, daher bedeutet dies auch, dass
nuget.exe
das Repo nicht mehrmals dupliziert wird .quelle
Wir haben die
nuget.config
Datei im Ordner, da sie die Verweise auf unseren internen Nuget-Server enthält, und verwenden den Bereich Paketquellen: https://docs.nuget.org/consume/nuget-config-settingsAbgesehen von diesem Grund sollten Sie Visual Studio das Herunterladen von Paketen überlassen.
quelle