首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Appsettings变量转换

Appsettings变量转换
EN

Stack Overflow用户
提问于 2016-12-03 08:05:01
回答 2查看 2.3K关注 0票数 2

在Octopus4中,我能够使用Octopus来转换我的变量与ASP.NET变量。

代码语言:javascript
复制
<appSettings xdt:Transform="Replace">
    <add key="LogLevel" value="#{Project.LogLevel}"/>

我一直在尝试为.NET核心寻找类似的解决方案,但只能找到适用于适当环境的建议。我想避免每个环境(app.production.json、app.staging.json)都有不同的.config文件,我只想有另一个app.release.config文件。

根据我对使用不同环境的理解,我的json应该是这样的:

代码语言:javascript
复制
{
    "LogLevel" : Debug
}

它将替换我的appsettings.json中的原始值。但是,正如我所提到的,我不希望必须进入文件中才能进行变量更改。

在.NET核心中有像这样更灵活的功能吗?

代码语言:javascript
复制
{
    "LogLevel" : #{Project.LogLevel}
}
EN

回答 2

Stack Overflow用户

发布于 2016-12-03 09:02:06

一种方法是为每个环境提供两个独立的appsettings.json文件,每个文件中都有相应的LogLevel。

现在,在Octo上,创建一个名为Environmentvariable,设置值并应用适当的范围(开发/阶段/生产),然后在*Target Files*上将其设置为类似appRoot\appsetting.#{Environment}.json的值

有用链接 http://docs.octopusdeploy.com/display/OD/Deploying+ASP.NET+Core+Web+Applications

出于本地调试的目的,假设您的应用程序代码和/或appsettings如下所示

appSettings.Development.json

代码语言:javascript
复制
{
  "LogLevel":"Debug"
}

appSettings.Production.json

代码语言:javascript
复制
{
  "LogLevel":"Trace"
}

namespace MySampleApp
{
    public static void Main(string[] args)
    {
        var environmentName = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT");          

        var builder = new ConfigurationBuilder()
            .AddJsonFile($"appsettings.json", true, true)
            .AddJsonFile($"appsettings.{environmentName}.json", true, true)
            .AddEnvironmentVariables();
       //set the ASPNETCORE_ENVIRONMENT on octo
        Configuration = builder.Build();
    }   
}

编辑

另一种方法是您可以将所有配置设置移动到Web.config文件-免责声明:我没有亲自尝试过-因为我遵循了上面的方法-拥有不同的appSetting.json文件。我这么说是基于这样一个事实,即我可以为Swagger设置添加一个xml文件,因此建议它也可以用于web.config文件。

代码语言:javascript
复制
 var builder = new ConfigurationBuilder().AddXmlFile("Web.config") 
票数 0
EN

Stack Overflow用户

发布于 2019-10-23 21:58:29

我最近经历了一个类似的过程,转换到.Net核心。我创建了基于环境的JSON文件,例如appsettings.development.jsonappsettings.production.json。然后,我在运行时传入环境,以便在运行时有选择地加载正确的配置-使用config.AddJsonFile。最后一个匹配键获胜,因此您将获得本质上是部分转换的结果(如这里所述的https://stackoverflow.com/a/37874308/1001408)。我也不会在转换文件中存储任何敏感的配置值,因此我可以使用Octopus部署变量替换,而不用担心在运行时覆盖任何值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40942741

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档