5

Ich benutze SlowCheetah für die XML-Umwandlung einer Reihe von Konfigurationsdateien in einem Projekt.Können mehrere Build-Konfigurationen eine Konfigurationsumwandlung gemeinsam nutzen?

Diese Lösung ist jedoch Teil einer Konfiguration mit Lastenausgleich, bei der einige Konfigurationswerte zwischen den verschiedenen Servern (in diesem Fall zwei) unterschiedlich sind.

Ich habe nach dem configs

  • Debug
  • Mitteilung
  • Release.Test
  • Release.Prod1
  • Release.Prod2

Fast alles in Release bauen. Prod1 und Release.Prod2 sind identisch, außer für einige Werte i n eine der Konfigurationsdateien. Gibt es eine Möglichkeit, wie ich eine Datei wie Something.Release.Prod.Config für beide Buildkonfigurationen verwenden kann, anstatt zwei identische Dateien (Something.Release.Prod1.Config und Something.Release.Prod2.Config) zu haben?

... und zu erarbeiten: In diesem Fall bin ich zu zwei Umgebungen bereitstellen, so dass eine doppelte Datei ist nicht wirklich eine große Krise. Was ist, wenn Sie zehn oder hundert Server haben? Ich sehe keinen Grund, warum ein Setup mit einem CI-Server (in diesem Fall speziell TeamCity) nicht in der Lage sein sollte, dies zu tun, obwohl ich denke, dass in solchen Umgebungen mehr benutzerdefinierte Setups üblich sind.

Wie wird das normalerweise gehandhabt?

Ich nehme an, dass ich magisches Kopieren von Dateien hin und her als Build-Schritt vor der eigentlichen Transformation tun kann, aber das scheint wie eine unordentliche und übermäßig komplizierte Lösung.

+0

etwas versuchen wir hier auch herauszufinden ... T4-Vorlagen werden vorgeschlagen, aber ich mag sie nicht besonders. Ich bevorzuge die Konfigurationsumwandlung, möchte sie aber über Debug & Release-Versionen hinaus erweitern. Genau wie Sie versuchen herauszufinden –

+1

Über Debuggen und Freigeben hinaus zu gehen ist einfach, das ist nur das Hinzufügen weiterer Build-Konfigurationen aus dem Menü Build => Build-Konfigurationen . Einige von ihnen teilen jedoch eine Datei ... –

Antwort

1

Die Konfigurationsumwandlungen werden von der Variablen $ (Configuration) in der Datei TransformsFiles.targets verarbeitet.

Hier können Sie $ (Konfiguration) ändern, um einen anderen Wert wie "Umgebung" zu haben. Dann einfach die „Umwelt“ Variable in der MSBuild args gesetzt -

/p:Environment=Prod 

Diese erlauben sollten Sie Ihre Build-Einstellungen beibehalten und Ihre Transformationen unabhängig machen.