AKTUALIZACE
Nyní jsem zjistil, že výše uvedená syntaxe if/else pro mě nefunguje, protože některé z mých propojených skriptů vyžadují příkaz GO. :r v podstatě pouze importuje skripty inline, takže se to stane neplatnou sytaxí.
Pokud potřebujete příkaz GO v propojených skriptech (jako já), pak to není žádný snadný způsob, jak to obejít, nakonec jsem vytvořil několik skriptů po nasazení a poté změnil svůj projekt tak, aby přepsal hlavní skript po nasazení v závislosti na době sestavení na konfiguraci sestavení. Toto nyní dělá to, co potřebuji, ale zdá se, že by měl existovat jednodušší způsob!
Pro každého, kdo potřebuje totéž – Tento příspěvek považuji za užitečný
Takže v mém projektu mám následující soubory pro nasazení:
- Script.PostDeployment.sql (prázdný soubor, který bude nahrazen)
- Default.Script.PostDeployment.sql (odkazy na skripty potřebné pro standardní konfiguraci dat)
- Configuration1.Script.PostDeployment.sql (odkazy na skripty potřebné pro konkrétní konfiguraci dat)
Potom jsem na konec souboru projektu přidal následující (kliknutím pravým tlačítkem se uvolní a poté pravým tlačítkem upravit):
<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>
Nakonec budete muset v řešení nastavit odpovídající konfigurace sestavení.
Pro každého, kdo zkouší jiná řešení, jsem také bez štěstí zkusil následující:
-
Vytvoření události po sestavení pro zkopírování souborů namísto nutnosti hackovat soubor XML projektu. Nemohl jsem to zprovoznit, protože jsem nemohl vytvořit správnou cestu k souboru skriptu po nasazení. Tento problém s připojením popisuje problém
-
Použití proměnných pro cestu skriptu k předání příkazu :r. Ale u tohoto přístupu jsem narazil na několik chyb.