Visual Studio 2012. Проект базы данных SQL Server.MSBuild & SQL Server Database Project: привязать развертывание и опубликовать назначение к конфигурации сборки
Конфигурации с четырьмя конфигурациями были созданы в решении: Debug, DevDb, TestDb, LocalDb.
Три публикующие профили были созданы в проекте: (!) DevDb.publish.xml, TestDb.publish.xml, LocalDb.publish.xml
Нажатие кнопки F5 Я хочу:
- развернуть проект со строкой подключения от свойств проекта если конфигурация сборки Отладка.
- опубликовать проект с строки подключения из соответствующих профилей публикации если конфигурации сборки DevDb, TestDB или LocalDB.
Для этого я редактирования проекта (.sqlproj) XML, пытаясь поймать вызов цели Deploy и заменить целевой стандарт Deploy с пользовательским поведением:
<Target Name="Deploy">
<!-- The first statment is for Debug configuration -->
<MSBuild Condition=" '$(Configuration)' == 'Debug' "
Targets="Deploy"
Projects="$(MSBuildProjectFile)"
Properties="Configuration=$(Configuration);"
/>
<!-- The second statement is for DevDb, TestDb, LocalDb configurations -->
<MSBuild Condition=" '$(Configuration)' != 'Debug' "
Targets="SqlPublish"
Projects="$(MSBuildProjectFile)"
Properties="SqlPublishProfilePath=$(Configuration).publish.xml;
Configuration=$(Configuration);"
/>
</Target>
Второй оператор работает отлично и я получаю развертывание в нужном месте.
Проблема заключается в первом утверждении - она создает круговую зависимость.
ошибка MSB4006: в графе зависимостей цели используется круговая зависимость, включающая целевое «развертывание».
Мой вопрос: как пересечь (уловить и заменить) стандартную цель, и если требуется снова вызвать стандартную цель?
Или я пытаюсь изобретать велосипед, и есть другой способ сделать то, что я хочу? (Что я хочу, описано выше под словами «Нажатие кнопки F5» :)