Проблема с проектом базы данных (DACPAC) - продолжение доставки

У меня есть процесс сборки Microsoft TFS для развертывания веб-проекта на Azure Web-роль, это происходит автоматически каждый день. Я следил за статьей Azure https://azure.microsoft.com/en-in/documentation/articles/cloud-services-dotnet-continuous-delivery/

У меня есть следующие аргументы MSBuild в моем процессе сборки, как предложенная выше статья

/t:Publish /p:PublishDir=C:\MSCD\

Когда я добавляю проект базы данных в свое проектное решение, сборка продолжает сбой. Получение сообщения об ошибке

Задаче "SqlPublishTask" не задано значение для обязательного параметра "SqlPublishProfilePath"

Когда я публикую свой веб-проект, я не хочу, чтобы проект базы данных был опубликован. Как удалить файл DACPAC в папку dropfolder? так что я могу использовать PowerShell для обновления моей базы данных в Azure.

Я использую TFS 2012 On-Premise. Может ли кто-нибудь дать предложение, как решить эту проблему?

1 ответ

Вам необходимо создать определения сборки Master-child и в определении master build сконфигурировать решение с отключенной сборкой и развертыванием в менеджере конфигурации. И только в проекте конфигурации базы данных child build.

Создайте определение Master и дочерней сборки так, чтобы они разделяли общее падение

Ответ @Siva Palla решил ту же самую проблему для меня. Вот полный набор изменений, которые мы сделали, чтобы заставить это работать.

Изменения в Visual Studio

Первоначально я использовал одну конфигурацию под названием "Развертывание", которая была настроена для развертывания как нашего проекта WinForms, так и нашего проекта SQL (VisionShellWin - это проект WinForms, два проекта Vision.SQLMigration - это проекты SSDT), поэтому все, что ниже, основано на изменениях в Развертывание. Для большинства людей у ​​вас будет Выпуск вместо Развертывания, все перечисленное ниже должно работать нормально, просто замените Выпуск на Развертывание:

Чтобы разделить эту единственную конфигурацию на две, я создал новую конфигурацию:

Я установил это новое развертывание для копирования его настроек из старой конфигурации развертывания, а не для создания новых конфигураций для каждого из проектов (существующие варианты развертывания уровня проекта подходят):

В этом новом развертывании я снял флажки "Построить и развернуть проекты базы данных":

Затем я снова сделал то же самое, чтобы создать развертывание для конкретной базы данных:

И в этом я снял все, кроме файлов базы данных:

Это все, что нужно в Visual Studio, поэтому я зафиксировал все это и синхронизировал его с DevOps.

Изменения в Azure DevOps

В DevOps я клонировал свой существующий этап сборки Visual Studio (называемый "Построить решение Winforms") и переименовал клон в Построить базы данных:

Я добавил две новые переменные сборки на вкладке Переменные с именами ClickOnceBuildStageConfiguration и DatabasesBuildStageConfiguration, значения которых равны именам новых конфигураций, которые мы только что создали в VS:

А затем я изменил этап сборки WinForms, чтобы использовать новую переменную ClickOnceBuildStageConfiguration - обратите внимание, что у нас все еще есть /T:"VisionShellWin" /target:Publish Аргументы MSBuild, необходимые для установки ClickOnce:

И новый этап сборки баз данных для использования переменной баз данных - обратите внимание, что у нас нет никаких аргументов MSBuild:

Наконец, в дополнение к этапу копирования, который у меня уже был для копирования файлов приложения ClickOnce в drop артефакт:

Я также добавил этап "Копирование файлов" (называемый "Копировать Dacpacs"), чтобы скопировать DacPac также в раскрывающемся списке:

После того, как вы сделали все это, вы должны получить работающую сборку и артефакт, содержащий файлы ClickOnce и DacPacs.

Другие вопросы по тегам