Как сделать имя базы данных параметром на deploymanifest?

Я пытаюсь настроить процесс сборки TFS по умолчанию, добавив шаг, на котором база данных разворачивается с использованием проекта базы данных. Я выполнил [эти шаги][1], и развертывание БД работает, когда имя базы данных представляет собой жесткий код в файле deploymanifest на этом шаге в InvokeProcess.

с. Установите для свойства Arguments значение "/a:Deploy /dd+ /dsp:Sql /manifest:DatabaseProjectName.deploymanifest". Вы должны заменить DatabaseProjectName именем проекта базы данных, который вы хотите развернуть.

Мой вопрос: как я могу изменить DatabaseProjectName на переменную и назначить ее динамически, чтобы этот BuildProcessTemplate мог использоваться другими сборками базы данных или если проект разветвлен в TFS? Я попытался использовать переменную $(DatabaseName), используемую в SQLCmdVars, со свойствами проекта, но, похоже, она не разрешается.

1 ответ

Решение

Во-первых, вы можете сделать DatabaseProjectName переменной в своем определении сборки, изменив шаблон определения, добавив в качестве аргументов "DatabaseProjectName" (и "TargetDatabaseName", если имя БД будет другим). Вы можете щелкнуть свойство Metadata, чтобы отобразить свойства, чтобы можно было присвоить ему разные имена в каждом определении сборки. Смотрите этот пост о добавлении аргументов. http://www.ewaldhofman.nl/post/2010/04/27/Customize-Team-Build-2010-e28093-Part-2-Add-arguments-and-variables.aspx

Затем используйте аргументы в вашей активности InvokeProcess в качестве переменных в строке, как показано ниже. Вы можете переопределить имя базы данных в манифесте, включив параметр /p:TargetDatabase.

/a:deploy /dd+ /dsp:sql /manifest:" & DatabaseProjectName & ".deploymanifest /p:TargetDatabase=" & TargetDatabaseName
Другие вопросы по тегам