2016-06-16 18 views
1

Ich bin Migration von Svn External Feature zu nuget mit einem riesigen Projekt und bis jetzt sieht es wie eine schlechte Entscheidung aus. Eine meiner Lösungen enthält 70 Projekte, in denen die meisten die gleichen gemeinsamen Referenzen enthalten (Nugget-Pakete). Vorherige Struktur war eine gemeinsame Lib-Ordner pro Lösung, die alle Referenzen von svn externals gesteuert, so dass, wann immer ich eine Version aktualisieren wollte ich gerade Zahlen in Tortoise Svn aktualisiert und klickte Update - schnelle Arbeit. Derzeit, wenn ich es aus Visual Studio heraus mache dauert es 10-20 mal länger, weil ich vermute, dass es die vorherige Version des Paketverzeichnisses aus Paketen entfernt, fügt neues Verzeichnis hinzu, aktualisiert packages.config Version und aktualisiert csproj Pfad. Also, wenn ich 7 Pakete in 70 Projekten aktualisiere und ich Visual Studio geöffnet habe, wird es viel länger dauern. Die Alternative besteht darin, die Lösung zu schließen und das Nuget-Update in command-line aufzurufen, aber das ist eher ein Workaround. Zuvor war der Pfad derselbe, das Konzept packages.config existierte nicht, so dass die einzige Änderung ein paar Zeilen Code in einer Textdatei waren, in der wir zur nächsten Schlussfolgerung kommen - Änderungen der Quellcodeverwaltung. Wenn ich ein Update mache, gibt es eine große Menge an Änderungen, die in die Quellcodeverwaltung eingecheckt werden müssen, und ich finde es ein bisschen unordentlich. Ich habe festgestellt, dass es eine Flagge für nuget install -ExcludeVersion gibt, die Version vom Pfad ausschließt, so dass csproj nicht geändert wird, und es ist ein großer Vorteil. Ist es eine gute Konvention, es zu benutzen? Gibt es Unterstützung für Visual Studio, um es automatisch zu verwenden, wenn ich ein Paket installiere? Gibt es eine Möglichkeit, ein Nuget-Paket als "Version im Pfad ignorieren" zu markieren? Soweit ich weiß, sind die Antworten für diese Fragen Nein, Nein, Nein. Wie gehst du mit nuget in größeren Projekten um? Bitte wissen Sie, ob ich etwas über niget lesen kann, wie man in größeren Projekten damit umgehen kann.Svn Externals zu Nuget Migration - Bedenken

Antwort

2

Lassen Sie uns jedes Problem einzeln behandeln. Ihre erste Frage lautet:

Ist es eine gute Konvention, es zu benutzen?
Dies ist der Meinung. Wenn es Ihr Projekt unterbricht, um die Option ExcludeVersion bei der Installation zu verwenden, können Sie es nicht verwenden. Andernfalls speichert es 70 Dateien auf Push. Die zweite Frage lautet:
Gibt es Unterstützung für Visual Studio, um es automatisch zu verwenden, wenn ich ein Paket installiere?
Soweit ich sagen kann (und ich kann falsch liegen), gibt es keine Möglichkeit, dies zu tun. Dies geht jedoch von einer schnellen Recherche ab, und weitere Informationen können tief in der Nuget Config File Defaults gefunden werden (ich konnte eine solche Konfiguration nicht finden).

Ich bin ein wenig verwirrt, was Sie meinen mit

Gibt es eine Möglichkeit, ein nugget-Paket als "Ignoriere Version im Pfad" zu markieren?
Allerdings scheint es, dass Sie meinen, was Colonel Panic in dieser Frage gefragt: Nuget Packages exclude version in folder naming, in denen die Antwort nein ist. Und schließlich stellen Sie kurz die Frage:
Wie gehen Sie mit nuget in größeren Projekten um?
Leider ist die Antwort auf diese Frage ziemlich einfach: Sie können nicht (zumindest nicht effektiv). Nüty selbst sagen dies in einer blog post vom 10. Oktober 2014. Wenn Sie unter ihrer "schädlichen Folgen" Abschnitt lesen, können Sie eine Menge der Probleme sehen, denen Sie begegnen.

In Ordnung, jetzt auf die Lösung. Ich bin in der Vergangenheit auf ein ähnliches Problem mit Nuget gestoßen, und die Lösung war ziemlich einfach. Alles, was ich tun musste, um die Zeit zu minimieren, war Git von der Kommandozeile mit Visual Studio .gitignore (Svn ich glaube, würde auch funktionieren) zu verwenden. Ich weiß, dass wir alle schätzen würden, dass Nuget in diesen Fällen arbeitet. Dies ist jedoch nicht der Fall. Wie Sie bereits Svn verwenden, würde ich vorschlagen, nicht zu ändern. Schließlich ist Nuget wirklich nur ein Makro innerhalb von Visual Studios, das auf einer Lösungsbasis arbeitet.

+0

1.Ich habe gerade herausgefunden, dass -ExcludeVersion nicht wie erwartet funktioniert. Es fügt dem Projektverzeichnis ein Paket hinzu, ohne es in packages.config aufzunehmen. 2. Nicht wichtig. 3. Ich wollte die Version ausschließen, wenn der Build-Server ein Paket erstellt und packt, anstatt es zu installieren. Es ist nicht wichtig, weil es nicht funktioniert. 4. Wir werden von Svn zu git migrieren, deshalb wollte ich eine geeignete Paketverwaltung verwenden, die niget ist. Ich kann nicht glauben, dass die Verwendung von nugget nach so vielen Jahren der Existenz nicht der Fall ist ... Ich werde es trotzdem versuchen und sehen, was passiert. Danke Kumpel – MistyK

+0

Ich habe gerade herausgefunden, dass ich project.json in WPF App nutzen kann. Ist es empfehlenswert? – MistyK