TFS 2015,vNext构建过程(不是xaml)
我正在尝试自动化MVC Web应用程序的部署过程。它将部署的服务器具有不同的SQL连接字符串。所以我当前的部署是手动将web.config文件复制到web.config.save,使用WebDeploy部署新版本,然后转到旧的web.config.save文件并复制连接字符串。我现在的规模已经达到了不可持续的程度。所以我需要进一步自动化这个过程。我有TFS自动构建和部署到我的测试服务器(它也有一个不同的连接字符串,所以这是一个很好的测试)。在“发布”属性中,我尝试取消选中“发布 - 设置 - 数据库”部分中的“在运行时使用此连接字符串(更新目标web.config)”复选框,然后再次在项目中检入TFS。但是在部署时,web.config采用默认设置。我不想删除此设置,因为我想在那里安装新的安装默认连接字符串。
我可以编写一个xml传输程序来保存当前连接字符串,然后在完成时重写。但我认为必须有一种方法可以用当前的工具集来做到这一点,为什么尝试重新发明轮子?
我开始使用转换的路径。所以我在VS2015中创建了一个web.config.release,然后将其添加到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>
那么,有没有人知道如果只在当前的web.config中不存在用于部署的SQL连接字符串更新?
答案 0 :(得分:1)
我在TFS 2015 vNext版本中获得了这方面的经验, 在2016年第二季度,我们分配了一名Dev Ops人员,他非常擅长PowerShell,并且他拥有构建和部署流程的所有权。他提出的一些事情是一个后期构建脚本。
现在回答您的问题:对于我们来说,Post-Build脚本将执行部署部分,作为部署的一部分,您将更新web.config中的连接字符串。现在,这将要求团队中的某些人使用PowerShell变得非常好。
现在我要做的是在原始文件中写一个特殊的单词,比如&#34; {ConStringHere}&#34;,并用Powershell脚本替换它,这样你只会替换它一次
请参阅此处如何验证文件是否包含单词并使用PowerShell替换它: Powershell, using contains to check if files contain a certain word
我将重点介绍这种方法遇到的一些好处: