Beste Methode: Restrukturieren Sie eine vorhandene TFS-Lösung (Team Foundation Server)

12

In meiner Abteilung entwickeln wir mehrere kleinere AddOns für einen Unified Communication Server. Für die Versionierung und verteilte Entwicklung verwenden wir einen Team Foundation Server 2012.

Aber: Für all unsere Anwendungen und Bibliotheken gibt es nur eine große TFS-Lösung:

  • Hauptlösung
    • Anwendungen
      • App 1
      • App 2
      • App 3
    • Externe
    • Bibliotheken
      • Lib 1
      • Lib 2
    • Werkzeuge

Der Pfad "Anwendung" enthält alle Hauptanwendungen. Diese hängen nicht voneinander ab, sondern von den Projekten Libraries und Externals.

Der Pfad "Externals" enthält einige externe DLLs, auf die in unseren Anwendungen und Bibliotheken verwiesen wird.

Der Bibliothekspfad enthält häufig verwendete Bibliotheken (UI-Vorlagen, Hilfsklassen usw.). Sie sind voneinander unabhängig und werden in den Projekten Libraries und Tools referenziert.

Der Tools-Pfad enthält einige Hilfsprogramme wie Einrichtungshilfen, Aktualisierungswebdienste usw.

Es gibt einige wichtige Gründe, warum ich diese Struktur ändern möchte:

  • Wir können keine Server-Builds verwenden.
  • Mit einer solchen Lösungsstruktur ist es unkomfortabel, das TFS-Scrum-Management mit Sprints, Hindernissen usw. zu verwalten.
  • Jeder Entwickler hat immer Zugriff auf alle Projekte in der Lösung.
  • Ein vollständiger Build dauert zu lange, wenn man in Visual Studio versehentlich [F6] drückt ...

Was würden Sie an dieser Lösung ändern? Wie würden Sie diese Projekte in kleinere Lösungen aufteilen, wie sollten diese Lösungen strukturiert sein?

Mein erster Ansatz wäre, ein TFS-Projekt für jede Anwendung, Bibliothek und jedes Tool zu erstellen. Aber wie kann ich sicherstellen, dass zB App 2 immer die neueste Version von Lib 1 enthält? Muss ich Änderungen in Lib 1 überwachen und App 2 manuell aktualisieren, sobald sich die Lib ändert? Oder kann ich Visual Studio irgendwie zwingen, immer die neueste Version eines externen Projekts zu verwenden?

Bearbeiten: Auf dem TFS gibt es nur eine TFS-Teamprojektsammlung, die ein TFS-Teamprojekt enthält. Das Team-Projekt enthält eine große Visual Studio-Lösung, die mehrere Ordner enthält (siehe Struktur oben), von denen jeder mehrere VS-Projekte enthält.

Meine Frage ist jetzt, wie würden Sie neu organisieren:

  1. Das TFS-Team Projekte
  2. Die VS-Projekte
dhh
quelle
1
Wenn Sie "eine große TFS-Lösung" sagen, sprechen Sie von einer TFS-Teamprojektsammlung, einem TFS-Teamprojekt oder einer Visual Studio-Lösung?
Zugbo
Wie Zugbo sagte, müssen Sie die richtige Terminologie finden, bevor jemand helfen kann, dies zu beantworten, da Sie scheinbar TFS Team Projects mit Visual Studio-Lösungen verwechseln. Sie können ein einzelnes Teamprojekt mit mehreren Lösungen haben.
Tom Robinson
Entschuldigen Sie, dass Sie zu wenig Details angegeben haben. Ich bearbeite meine erste Frage.
Dhh

Antworten:

11

Halten Sie sich an ein TFS-Team-Projekt, da es beim Versuch, ein Upgrade durchzuführen, schwierig wird, mehrere zu haben, und einige Einschränkungen in Bezug auf teamübergreifende Projektarbeitselemente aufweist. Stattdessen sollten Sie Bereiche und Iterationen intensiv nutzen.

Teilen Sie Ihre VS-Lösung in mehrere Lösungen auf, eine pro Hauptanwendung. Dies beschleunigt sowohl lokale Builds als auch den Build-Server erheblich.

TFS2012 hat ein neues Konzept mit dem Namen Teams. Erstellen Sie ein Team pro Anwendung und legen Sie Standarditerationen und -rückstände für jede Anwendung fest. Auf diese Weise können Sie das Backlog für jedes einzelne verwalten oder das Stammteam anzeigen, um ein aufgerolltes Backlog anzuzeigen. Dann können Sie Sprints entweder auf Anwendungsebene oder insgesamt verwalten, je nachdem, was zu Ihnen passt.

Erstellen Sie NuGet-Pakete für alle Bibliotheken von Drittanbietern, für die noch keine vorhanden ist. Speichern Sie sie in einem privaten Repository (freigegebener Windows-Ordner) und aktivieren Sie die Paketwiederherstellungsfunktion für NuGet, indem Sie mit der rechten Maustaste auf jede Lösung klicken und diese aktivieren (lassen Sie auch die Paketwiederherstellung zu, um Pakete in vs-Einstellungen herunterzuladen).

Wenn Sie über gemeinsam genutzte interne Bibliotheken verfügen, erstellen Sie auch für diese NuGet-Pakete und erstellen Sie eine VS-Lösung, die nur diese Bibliothek enthält. Fügen Sie einen Post-Build-Befehl hinzu, um das Nuget-Paket zu erstellen, oder erweitern Sie Ihre TFS-Build-Vorlage, um dies zu tun (es gibt eine Reihe von Vorlagen, die dies bereits tun).

Betty
quelle
+1 - wünschte, ich könnte es mehr machen. Die Bindung der Repo-Struktur an die Anwendungsstruktur ist ein Rezept für Probleme, wenn sich die Anwendungsstruktur ändert. Lassen Sie die "weiche" Trennung von Lösungsdateien, Bereichen und Iterationen als Grenzen dienen und teilen Sie, was zum Teilen sinnvoll ist.
Telastyn