【发布时间】:2017-04-13 05:12:36
【问题描述】:
TL;DR;
在实施持续部署时,如何使用 Visual Studio & TFS 2015 管理 app.config/web.config 中的环境特定设置?
完整问题
我正在尝试使用 the built-in feature in TFS 2015 为我的 C# Visual Studio 2015 解决方案实施持续部署。我目前想知道如何在我的配置文件中设置与环境相关的设置(通常是数据库连接字符串)。
我基本上有 4 种不同的环境:生产、预生产、UAT 和集成。我没有部署到 Azure 或云。一切都在我公司的服务器上。
我已尝试实施 this link 提出的解决方案,但除非我误解了某些内容,否则我觉得这意味着我还必须在我的 Visual Studio 解决方案中标记我的 web.config 和 app.config。我想避免这种情况,因为我想尽可能保持我和我队友的体验。我不希望我们不得不修改另一个文件来管理我们的配置设置。
我也想过使用 XML 转换,这将在部署期间由 Powershell 任务触发。基本上,我保留我的配置文件,并且该任务在触发时修改配置文件(如this link 所建议的那样)。但理想情况下,我想使用该版本的内置环境变量。此外,这意味着我的转换文件将作为我的解决方案的一部分签入。如果我需要更改它,我需要运行一个新的构建/部署。我想避免这种情况。
所以没有解决方案是完全令人满意的。我想知道是否有其他工具或库可以完成这项工作。我什么也找不到。如果什么都没有,我想我可以通过 Powershell 任务想出一些东西,但如果我可以避免重新发明轮子......
最后一件事,我想我可以在 Visual Studio 中创建一个基于“发布”的新配置,我会命名为“部署”。然后我会在此配置上使用 XML 转换,仅对配置文件进行标记,并保持 Debug 和 Release 不变。在我的 TFS 构建中,我将使用此配置来部署标记化配置文件作为工件,我最终可以使用 Powershell 脚本和环境变量(如上面的第一个链接)进行更新。但这似乎太复杂,涉及的东西太多。我敢肯定还有更简单的事情可以做。
还有this solution,但这意味着 1 个环境 = 1 个构建。我绝对想避免这种情况。我想要 1 次构建 = 到处部署。
【问题讨论】:
标签: powershell xslt visual-studio-2015 tfs-2015 continuous-deployment