UPDATE
Теперь я обнаружил, что приведенный выше синтаксис if / else не работает для меня, потому что некоторые из моих связанных скриптов требуют оператора GO. По сути,: r просто импортирует скрипты, так что это становится недействительным синтаксисом.
Если вам нужен оператор GO в связанных сценариях (как и я), то нет простого способа обойти это, я закончил тем, что создал несколько сценариев после развертывания, а затем изменил свой проект, чтобы перезаписать основной сценарий после развертывания в время сборки в зависимости от конфигурации сборки. Сейчас я делаю то, что мне нужно, но, похоже, должен быть более легкий путь!
Для тех, кому нужно то же самое - Я нашел этот пост полезным
Итак, в моем проекте у меня есть следующие файлы после развертывания:
- Script.PostDeployment.sql (пустой файл, который будет заменен)
- Default.Script.PostDeployment.sql (ссылки на скрипты, необходимые для стандартной конфигурации данных)
- Configuration1.Script.PostDeployment.sql (ссылки на скрипты, необходимые для конкретной конфигурации данных)
Затем я добавил следующее в конец файла проекта (щелкните правой кнопкой мыши, чтобы выгрузить, а затем щелкните правой кнопкой мыши на правке):
<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>
Наконец, вам необходимо настроить соответствующие конфигурации сборки в решении.
Кроме того, для любого, кто пробует другие способы обхода, я также попытался без удачи:
Создание события пост-сборки для копирования файлов вместо того, чтобы взламывать файл проекта XML. я не мог заставить это работать, потому что я не мог сформировать правильный путь к файлу сценария после развертывания. Эта проблема с подключением описывает проблему
Использование переменных для пути к сценарию для передачи в команду: r. Но я столкнулся с несколькими ошибками при таком подходе.