Ich versuche, TFS (2013) dazu zu bringen, meinen packages
Ordner zu ignorieren . Ich möchte leidenschaftlich nicht, dass es quellengesteuert wird, da ich NuGet verwende und es großartig ist!
Ich habe versucht zu tarnen (scheint nicht zu funktionieren), ich habe versucht, .tfignore
Dateien hinzuzufügen - nichts wird ignoriert. Warum fügt das TFS-Team nicht einfach eine Option hinzu, um einen Ordner oder eine Datei dauerhaft zu ignorieren, wie es viele Subversion-Clients tun?!
Antworten:
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 vons
nach demtf
). Sein Inhalt sollte wie folgt sein: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 dierepositories.config
Datei behalten möchten, anstatt VS sie neu generieren zu lassen, sollten Sie in der Lage sein, Folgendes zu verwenden: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 NamenNuGet.config
und legen Sie sie in diesem neuen Ordner ab. 2 . Der Inhalt sollte folgendermaßen aussehen: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.
quelle
Eine alternative Lösung zu den oben genannten ist die folgende.
Es ist erwähnenswert, dass diese Lösung pro TFS-Arbeitsbereich angewendet werden muss. Es hat für mich viel zuverlässiger funktioniert, als die
.tfignore
Datei zu verwenden.Weitere Informationen zu diesem Ansatz finden Sie im Blog-Artikel Verhindern, dass TFS installierte NuGet-Pakete zur Quellcodeverwaltung hinzufügt .
quelle
Für Leute, die berichten, dass die Option .tfignore nicht mit der Einstellung nuget.config funktioniert, könnte dies von Interesse sein - diese Schritte haben schließlich für mich funktioniert:
quelle
Fügen Sie eine nuget.config-Datei in einem .nuget-Ordner in Ihrer Lösung hinzu. Fügen Sie der Datei nuget.config Folgendes hinzu:
Die disableSourceControlIntegration macht den Trick für die TFS-Versionskontrolle aus.
quelle
Sie müssen lokale Arbeitsbereiche verwenden, um
.tfignore
arbeiten zu können. Die.tfignore
Datei muss sich in dem Ordner befinden, der die Dateien oder Ordner enthält, die Sie ignorieren möchten.Wenn Ihre Lösungsstruktur also so aussieht:
Sie haben Ihre .tfignore-Datei in \ Project abgelegt:
Der Inhalt des .tfignore in Ihrem Fall wäre:
\packages
Hier ist eine Dokumentation für Sie: http://msdn.microsoft.com/library/vstudio/ms245454(v=vs.110).aspx#tfignore
quelle
packages
statt\packages
wie es ist relativ.Sie können dies einmalig in Ihrem
AppData\Roaming
für alle Lösungen (alt & neu) einstellen !Fügen Sie in Ihrer
%AppData%\NuGet\NuGet.Config
Datei Folgendes unmittelbar vor dem</configuration>
XML-Tag hinzu ...... Sie können einen beliebigen Pfad angeben - das Wichtigste ist, ihn AUSSERHALB Ihres TFS-Arbeitsbereichs zu platzieren!
Jetzt müssen Sie sich nie wieder um dieses Zeug kümmern. Ihr Lösungsordner enthält keine Pakete mehr. Alle Lösungen verwenden stattdessen standardmäßig den Speicherort Ihrer benutzerdefinierten Pakete.
HINWEIS - Dies funktioniert auf Benutzerbasis.
quelle
Stellen Sie Ihre Lösung so ein, dass sie beim Erstellen wiederhergestellt wird. Der Paketordner und die Paketdatei werden eingecheckt, die Pakete jedoch nicht.
quelle
Wenn Sie Git mit TFS verwenden, müssen Sie eine ".gitignore" -Datei hinzufügen. Sie können dies unter "Teamprojekt | Einstellungen | 'Ignorierdatei hinzufügen'" tun. Öffnen Sie dann die Datei und kommentieren Sie die integrierte Ignorieranweisung für Nuget-Pakete aus.
Wenn Sie TFVC verwenden und lokale Arbeitsbereiche konfiguriert haben, können Sie die Datei ".tfignore" verwenden, die ein identisches Format wie die Git-Datei aufweist. Ich denke du brauchst "Pakete /".
quelle
Bei Visual Studio Online und VS2013 hat das bei mir nicht ganz funktioniert.
Aus den anderen Kommentaren geht hervor, dass Ihr Kilometerstand an dieser Stelle variieren kann. Das ist was ich mache:
Checken Sie alles ein, einschließlich aller Pakete.
Löschen Sie alle Pakete in Ihrer Lösung und checken Sie diese Änderung ein (dadurch werden die Pakete aus TFS entfernt).
Öffnen Sie die Lösung und erstellen Sie sie, um die Pakete zum Projekt hinzuzufügen, aber TFS holt sie nicht ab.
quelle
Die Lösung, die für mich funktioniert hat, bestand darin, sowohl einen .tfignore als auch die folgende Einstellung in der Nuget.Config zu erstellen:
Mein .tfignore enthält diese Zeile:
[Ich verwende Visual Studio 2015 Update 2]
Dies ist nicht ideal und wird derzeit als offenes Problem auf github / nuget protokolliert:
Erleichtern Sie das Weglassen von Paketen aus TFVC # 493
quelle
Terjes Antwort funktioniert nicht immer für mich, manchmal funktioniert es für eine Weile, aber dann hängt eine Menge "Adds" für mich wieder ab.
Die einzige Möglichkeit, dies dauerhaft zu lösen, besteht darin, den Paketordner in meinem Arbeitsbereich zu verschleiern.
Zum Beispiel:
quelle
Ich hatte das gleiche Problem.
/packages
sollte funktionieren, aber nicht für mich.packages*.*
funktionierte.quelle