2009-04-30 3 views
1

Ich automatisiere meinen Build-Prozess mit TeamFoundation und ich muss wählen, welche Projekte entsprechend der .proj-Datei aus dem Build zu kompilieren. Hier ist das vollständige Szenario:TeamBuild - Ist es möglich auszuwählen, welche Projekte zur Build-Zeit kompiliert werden?

Ich habe eine .proj-Datei, die eine .sln-Datei verwendet, um eine Lösung zu kompilieren, die 2 Websites enthält. Die .sln-Datei ist so konfiguriert, dass beide Websites in der Release-Konfiguration kompiliert werden.

Mein Ziel ist es nur 1 Seite pro Buildtyp zu erstellen, und zwar möchte ich die BuildType1 Website zu kompilieren 1 und BuildType2 Die Website ist 2.

Ist zu kompilieren möglich, „zu modifizieren“ die SLN in einem solchen Wie kann ich eine der zu kompilierenden Websites entfernen? Da es sich um einen automatisierten Prozess handelt, kann ich die .sln nicht jedes Mal manuell ändern, wenn ich nur eine Website kompilieren möchte.

Antwort

1

Sehen Sie sich den Abschnitt SolutionToBuild in der Datei TFSBuild.proj an.

<SolutionToBuild Include="$(BuildProjectFolderPath)/path/MySolution.sln"> 
    <Targets>MyCustomTarget1;MyCustomTarget2</Targets> 
    <Properties> Configuration=Release</Properties> 
</SolutionToBuild> 
+0

Danke für Ihre Antwort, leppie. Lassen Sie mich sehen, wenn ich habe, was Sie gesagt haben, wenn ich ein benutzerdefiniertes Ziel für jedes Projekt, das ich nicht kompilieren möchte, erstellen, werden diese Ziele die Standardziele überschreiben und wenn ich sie einfach leer lasse, wird die Kompilierung des Projekts übersprungen ? Wenn ja, wie kann ich ein Ziel mit einem Projekt verknüpfen? Ich meine, sagen wir, ich habe 50 Projekte in meiner Lösung, ich möchte die Kompilierung von einem von ihnen überspringen, kann ich es tun, nur die TFSBUILD.proj Datei modyfing, da ich die .csproj von jedem Projekt nicht ändern kann? –

+0

Sie können eine neue Konfiguration auf Lösungsebene erstellen (die IDE fragt, ob Sie auch die Konfiguration für die Projekte erstellen möchten). Hinweis: Sie ändern nur den Konfigurationsteil in der .proj, so dass der Rest einfach auf der Client-Seite getestet werden kann. – leppie

+0

Hmm, ich habe es .. Ich denke, die erforderlichen Änderungen in der Lösung sind einfach genug, um das Entwicklungsteam zu fragen, ich glaube nicht, dass sie sich darüber beschweren werden. Danke leppie! –

1

Es gibt zwei Möglichkeiten, Sie die Build steuern:

  • einen separaten Build-Typen in Ihrem Team Explorer erstellen. Dies wird seine eigene völlig unabhängige TFSBuild.proj-Datei haben, so dass es die gleiche Code-Basis auf eine völlig andere Weise erstellen kann. Legen Sie SolutionToBuild so fest, dass Sie genau das erstellen, was Sie möchten (wie in der akzeptierten Antwort beschrieben).

  • Verwenden Sie einen Build-Typ, und legen Sie TFSBuild.proj fest, um eine Eigenschaft zu verwenden, um zu steuern, was erstellt wird (dies erfordert ein besseres Verständnis der MSBuild-Skripts). Im Dialogfeld Neue Warteschlange erstellen können Sie dann das Flag/p: verwenden, um die Eigenschaft so festzulegen, wie Sie sie benötigen. z.B. "/ p: IncrementalGet = false; IncrementalBuild = false; ForceGet = true" erzwingt einen normalerweise inkrementellen Build, um eine vollständige Neuerstellung durchzuführen. Dies ist nützlich für gelegentliche Situationen, aber keine gute Idee für tägliche Builds, da Sie die Parameter jedes Mal von Hand einstellen müssen.

Verwandte Themen