AKTUALIZUJ
Odkryłem, że powyższa składnia if/else nie działa dla mnie, ponieważ niektóre z moich połączonych skryptów wymagają instrukcji GO. Zasadniczo :r po prostu importuje skrypty w linii, więc staje się to nieprawidłową składnią.
Jeśli potrzebujesz instrukcji GO w połączonych skryptach (tak jak ja), to nie ma łatwego sposobu na obejście tego, skończyło się na utworzeniu kilku skryptów po wdrożeniu, a następnie zmianie mojego projektu, aby nadpisać główny skrypt po wdrożeniu w czasie kompilacji, w zależności od w konfiguracji kompilacji. Robię teraz to, czego potrzebuję, ale wydaje się, że powinien być łatwiejszy sposób!
Dla każdego, kto potrzebuje tego samego - Uważam ten post za przydatny
Tak więc w moim projekcie mam następujące pliki po wdrożeniowe:
- Script.PostDeployment.sql (pusty plik, który zostanie zastąpiony)
- Default.Script.PostDeployment.sql (linki do skryptów potrzebnych do standardowej konfiguracji danych)
- Configuration1.Script.PostDeployment.sql (łącza do skryptów potrzebnych do określonej konfiguracji danych)
Następnie dodałem na końcu pliku projektu (kliknij prawym przyciskiem myszy, aby wyładować, a następnie kliknij prawym przyciskiem myszy):
<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>
Na koniec musisz skonfigurować pasujące konfiguracje kompilacji w rozwiązaniu.
Ponadto, dla każdego, kto próbuje innych obejść, bez powodzenia wypróbowałem również następujące rozwiązania:
-
Tworzenie zdarzenia po kompilacji w celu skopiowania plików zamiast hakowania pliku projektu XML. nie mogłem zmusić tego do pracy, ponieważ nie mogłem utworzyć prawidłowej ścieżki do pliku skryptu po wdrożeniu. Ten problem z połączeniem opisuje problem
-
Używanie zmiennych dla ścieżki skryptu do przekazania do polecenia :r. Ale przy takim podejściu natknąłem się na kilka błędów.