АКТУАЛИЗАЦИЯ
Сега открих, че синтаксисът 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. Но се натъкнах на няколко грешки с този подход.