TL; DR;
如何使用Visual Studio& amp ;;在app.config / web.config中管理特定于环境的设置实施持续部署时的TFS 2015?
完整问题
我正在尝试使用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中创建一个基于“Release”的新配置,我将其命名为“Deployment”。然后我只在这个配置上使用XML Transform来标记配置文件并按原样保留Debug和Release。在我的TFS构建中,我将使用此配置将部署标记化配置文件作为工件,我最终可以使用Powershell脚本和环境变量(如上面的第一个链接)进行更新。但它似乎太复杂,涉及太多事情。我确信有一些更简单的事情可以做。
还有this solution,但这意味着1个环境= 1个版本。我绝对想避免这种情况。我想在任何地方进行1 build = deploy。
答案 0 :(得分:1)
如果您希望在部署时在不同的发布环境中更改某些设置(如app.config / web.config中的数据库连接字符串),则可以下载此Release Management Utility tasks extension并为您的TFS集合安装它。使用 Tokenize with XPath / Regular 步骤更改相应的值。
在此步骤中,它提供了许多方法来替换文件中的值。对于大多数方法,您需要更改连接字符串,如:_ConnectingValue_
。如果您不想添加此符号(_),可以使用以下方法:
代码:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<appSettings>
<add key="TestKey1" value="Old Value" />
</appSettings>
</configuration>
.json
文件:代码:
{
"Default Environment":{
"ConfigChanges":[
{
"KeyName":"/configuration/appSettings/add[@key='TestKey1']",
"Attribute":"value",
"Value":"New value"
}
]
}
}
结果:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<appSettings>
<add key="TestKey1" value="New value" />
</appSettings>
</configuration>
要了解有关此步骤的更多信息: