TFS 2015, процесс сборки vNext (не xaml)
Я пытаюсь автоматизировать процесс развертывания веб-приложения MVC. Серверы, которые он будет развертывать, будут иметь разные строки подключения SQL. Таким образом, мое текущее развертывание заключается в том, чтобы вручную скопировать файл web.config в web.config.save, развернуть новую версию с помощью WebDeploy, затем перейти к старому файлу web.config.save и скопировать строку подключения. Сейчас я достиг такого размера, что долго это не продлится. Поэтому мне нужно автоматизировать этот процесс дальше. У меня TFS автоматически создается и развертывается на моем тестовом сервере (который также имеет другую строку подключения, так что это отличный тест). В свойствах «публикации» я попытался снять флажок «Использовать эту строку подключения во время выполнения (обновить место назначения web.config)» в разделе базы данных «публикация настроек», а затем снова проверил проект в TFS. Но при развертывании web.config принял значение по умолчанию. Я не хочу удалять этот параметр, потому что мне нужна строка подключения по умолчанию для новых установок.
Я мог бы написать программу передачи xml, чтобы сохранить текущую строку подключения, а затем перезаписать ее после завершения. Но я подумал, что должен быть способ сделать это с текущим набором инструментов, и зачем пытаться изобретать велосипед?
Я пошел по пути использования преобразований. Итак, я создал файл web.config.release в VS2015, а затем добавил его в файл web.config.release:
<connectionStrings>
<add xdt:Transform="InsertIfMissing" xdt:Locator="Match(name)" name="AppEntities" connectionString="metadata=res://*/Models.DBName.csdl|res://*/Models.DBName.ssdl|res://*/Models.DBName.msl;provider=System.Data.SqlClient;provider connection string="data source=.\SQLExpress;initial catalog=DBName;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
</connectionStrings>
Итак, кто-нибудь знает, как я могу обновить строку подключения SQL, только если она не существует в текущем файле web.config для развертывания?