没有源代码控制的配置转换的构建中的配置管理

时间:2016-12-12 14:39:11

标签: json tfs asp.net-core azure-devops .net-core

给定appsettings.json文件(ASP.NET核心应用程序)中名为“Data:ConnectionString”的配置,如何在构建中覆盖它?通过覆盖它可以是在构建期间编译之前有一个更改appsettings.json中的值的步骤,或者在使用“dotnet test”或其他内容时覆盖参数。

更多信息:

我在appsettings.json中有一个标准配置的ASP.NET Core应用程序。我不希望在源代码管理中检查任何连接字符串或敏感数据。

我正在使用Visual Studio Team Service(云TFS)构建我的应用程序。有一个执行测试的步骤,我希望这些测试针对我不想检查凭证的远程服务运行。

3 个答案:

答案 0 :(得分:1)

http://marketplace.visualstudio.com上有许多扩展程序可以帮助您,而不会有任何复杂的问题。

https://marketplace.visualstudio.com/items?itemName=YodLabs.VariableTasks

我喜欢随附的变量任务包:

  • 设置变量设置变量值,并可选择对其应用变换。
  • 使用凭据设置变量设置现有服务端点的用户名/密码
  • 从JSON设置变量使用JSONPath
  • 从JSON中提取值
  • 从XML设置变量使用XPath从XML中提取值
  • 更新内部版本号允许您更改内部版本号 增量版本增加一个semver版本号

超级简单......你也可以搜索" json"或"变量"找到其他选择...

答案 1 :(得分:0)

最受欢迎的方式:

  • 使用app secrets
  • 在project.json中使用scripts部分。你有4个活动 - 预编译,后编译,预发布,postpublish

答案 2 :(得分:0)

您可以将构建中的环境变量ASPNETCORE_ENVIRONMENT设置为" Test"。创建一个名为appsettings.Test.Json的appsettings.json文件。然后,当您在Startup.cs中设置配置时,请执行类似......

的操作
          var builder = new ConfigurationBuilder()
            .SetBasePath(env.ContentRootPath)
            .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
            .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true);

当环境变量设置为TEST时,您将加载新的appsettings文件,并可以将连接字符串设置为您想要的任何内容。