Hier ist der Deal: Wir müssen sowohl NuGet als auch TFS anweisen, die Pakete zu ignorieren, da NuGet versucht, Dinge im Zusammenhang mit der Quellcodeverwaltung zu tun, die es absolut nicht tun sollte (schlechte Form, Microsoft!). Sie müssen also zwei Dinge tun.
Fügen Sie zunächst eine Datei mit dem Namen .tfignore
zum Lösungsordner hinzu (beachten Sie das Fehlen von s
nach dem tf
). Sein Inhalt sollte wie folgt sein:
\packages
Das weist TFS an, Ihren Paketordner zu ignorieren. Nun würden Sie denken, dass dies auch die repositories.config
Datei ignorieren würde . Aber das wird es nicht. Warum? Wer weiß, die Wege von Microsoft sind seltsam und mysteriös. Eigentlich denke ich, dass es Teil des NuGet-Materials ist, das ich unten skizziere, aber wenn dies in Zukunft jemals behoben wird und Sie die repositories.config
Datei behalten möchten, anstatt VS sie neu generieren zu lassen, sollten Sie in der Lage sein, Folgendes zu verwenden:
\packages
!\packages\repositories.config
OK, dank unserer .tfignore
Datei ignoriert TFS Ihre Pakete. Alles ist gut, oder? FALSCH , weil NuGet mit Ihrer Quellcodeverwaltung herumspielt und die Pakete zu Ihren ausstehenden Änderungen hinzufügt. Lassen Sie uns nun NuGet anweisen, es bereits auszuschneiden.
Erstellen Sie einen Ordner, der .nuget
im Stammverzeichnis Ihres Lösungsordners aufgerufen wird . 1 Erstellen Sie nun eine Datei mit dem Namen NuGet.config
und legen Sie sie in diesem neuen Ordner ab. 2 . Der Inhalt sollte folgendermaßen aussehen:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<solution>
<add key="disableSourceControlIntegration" value="true" />
</solution>
</configuration>
Und jetzt sollten Ihre Pakete außerhalb der Quellcodeverwaltung bleiben. Denken Sie daran, die Dateien NuGet.config
und .tfignore
zur Quellcodeverwaltung hinzuzufügen, damit sie nie verloren gehen.
BEARBEITEN: Wenn Sie Probleme haben, möchten Sie möglicherweise Ihren Paketordner löschen, diese Änderung einchecken und dann die obigen Schritte ausführen.
AUCH BEARBEITEN: Es sieht so aus, als würde dies mit neueren Versionen von Nuget nicht passieren. Wenn Sie also zu VS / TFS 2017 wechseln, wird dieses Problem möglicherweise behoben, ohne durch die oben genannten Rahmen zu springen.
1 . Fügen Sie den Ordner mit dem Quellcodeverwaltungs-Explorer hinzu. Klicken Sie mit der rechten Maustaste auf die Lösung-> Ordner hinzufügen ->. Nuget
2 . Als ich dies mit VS 2013 herausfand, stellte ich fest, dass die Datei NuGet.config im Ordner .nuget abgelegt werden musste. Auch wenn Sie bereits eine NuGet.config-Datei im Stammverzeichnis Ihres Lösungsordners haben (weil Ihr Unternehmen beispielsweise über einen internen Nuget-Feed verfügt). Einige Kommentare haben jedoch darauf hingewiesen, dass es im Lösungsstamm in VS 2015 einwandfrei funktioniert. Persönlich habe ich im Git-Modus auf TFS umgestellt, sodass ich nicht testen kann. Wenn Sie über einen benutzerdefinierten Feed verfügen, stellen Sie außerdem sicher, dass Sie sowohl den benutzerdefinierten Feed als auch nuget.org als Schlüssel in der Datei Nuget.config haben. Andernfalls entscheidet TFS nach dem Zufallsprinzip, dass die Pakete nicht wiederhergestellt werden können.