在Octopus4中,我能够使用Octopus来转换我的变量与ASP.NET变量。
<appSettings xdt:Transform="Replace">
<add key="LogLevel" value="#{Project.LogLevel}"/>我一直在尝试为.NET核心寻找类似的解决方案,但只能找到适用于适当环境的建议。我想避免每个环境(app.production.json、app.staging.json)都有不同的.config文件,我只想有另一个app.release.config文件。
根据我对使用不同环境的理解,我的json应该是这样的:
{
"LogLevel" : Debug
}它将替换我的appsettings.json中的原始值。但是,正如我所提到的,我不希望必须进入文件中才能进行变量更改。
在.NET核心中有像这样更灵活的功能吗?
{
"LogLevel" : #{Project.LogLevel}
}发布于 2016-12-03 09:02:06

一种方法是为每个环境提供两个独立的appsettings.json文件,每个文件中都有相应的LogLevel。
现在,在Octo上,创建一个名为Environment的variable,设置值并应用适当的范围(开发/阶段/生产),然后在*Target Files*上将其设置为类似appRoot\appsetting.#{Environment}.json的值
有用链接 http://docs.octopusdeploy.com/display/OD/Deploying+ASP.NET+Core+Web+Applications
出于本地调试的目的,假设您的应用程序代码和/或appsettings如下所示
appSettings.Development.json
{
"LogLevel":"Debug"
}appSettings.Production.json
{
"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文件。
var builder = new ConfigurationBuilder().AddXmlFile("Web.config") 发布于 2019-10-23 21:58:29
我最近经历了一个类似的过程,转换到.Net核心。我创建了基于环境的JSON文件,例如appsettings.development.json,appsettings.production.json。然后,我在运行时传入环境,以便在运行时有选择地加载正确的配置-使用config.AddJsonFile。最后一个匹配键获胜,因此您将获得本质上是部分转换的结果(如这里所述的https://stackoverflow.com/a/37874308/1001408)。我也不会在转换文件中存储任何敏感的配置值,因此我可以使用Octopus部署变量替换,而不用担心在运行时覆盖任何值。
https://stackoverflow.com/questions/40942741
复制相似问题