AKTUALISIEREN
Ich habe jetzt festgestellt, dass die obige if/else-Syntax für mich nicht funktioniert, da einige meiner verknüpften Skripte eine GO-Anweisung erfordern. Im Wesentlichen importiert :r die Skripte einfach inline, sodass dies zu einer ungültigen Syntax wird.
Wenn Sie (wie ich) eine GO-Anweisung in den verknüpften Skripts benötigen, gibt es keinen einfachen Weg, dies zu umgehen. Am Ende habe ich mehrere Post-Deployment-Skripts erstellt und dann mein Projekt geändert, um das Haupt-Post-Deployment-Skript je nach Erstellungszeit zu überschreiben auf der Build-Konfiguration. Das tut jetzt, was ich brauche, aber es scheint, als sollte es einen einfacheren Weg geben!
Für alle, die dasselbe brauchen - Ich fand diesen Beitrag hilfreich
In meinem Projekt habe ich also die folgenden Post-Deployment-Dateien:
- Script.PostDeployment.sql (leere Datei, die ersetzt wird)
- Default.Script.PostDeployment.sql (Links zu Skripten, die für die Standarddatenkonfiguration benötigt werden)
- Configuration1.Script.PostDeployment.sql (Links zu Skripten, die für eine bestimmte Datenkonfiguration benötigt werden)
Ich habe dann am Ende der Projektdatei Folgendes hinzugefügt (Rechtsklick zum Entladen und dann Rechtsklick zum Bearbeiten):
<Target Name="BeforeBuild">
<Message Text="Copy files task running for configuration: $(Configuration)" Importance="high" />
<Copy Condition=" '$(Configuration)' == 'Release' " SourceFiles="Scripts\Post-Deployment\Default.Script.PostDeployment.sql" DestinationFiles="Scripts\Post-Deployment\Script.PostDeployment.sql" OverwriteReadOnlyFiles="true" />
<Copy Condition=" '$(Configuration)' == 'Debug' " SourceFiles="Scripts\Post-Deployment\Default.Script.PostDeployment.sql" DestinationFiles="Scripts\Post-Deployment\Script.PostDeployment.sql" OverwriteReadOnlyFiles="true" />
<Copy Condition=" '$(Configuration)' == 'Configuration1' " SourceFiles="Scripts\Post-Deployment\Configuration1.Script.PostDeployment.sql" DestinationFiles="Scripts\Post-Deployment\Script.PostDeployment.sql" OverwriteReadOnlyFiles="true" />
</Target>
Schließlich müssen Sie passende Build-Konfigurationen in der Lösung einrichten.
Für alle, die andere Problemumgehungen ausprobieren, habe ich auch Folgendes ohne Erfolg versucht:
-
Erstellen eines Post-Build-Ereignisses zum Kopieren der Dateien, anstatt die Projektdatei-XML hacken zu müssen. Ich konnte dies nicht zum Laufen bringen, weil ich den richtigen Pfad zur Post-Deployment-Skriptdatei nicht bilden konnte. Dieses Verbindungsproblem beschreibt das Problem
-
Verwenden von Variablen für den Skriptpfad, der an den Befehl :r übergeben wird. Aber ich bin bei diesem Ansatz auf mehrere Fehler gestoßen.