2016-12-03 81 views
2

在ASP.NET 4中,我能够使用app.config XML将变量与Octopus变量进行转换。Appsettings变量转换

<appSettings xdt:Transform="Replace"> 
    <add key="LogLevel" value="#{Project.LogLevel}"/> 

我一直在试图寻找类似的.NET Core解决方案,但只能找到合适的环境建议。我想避免每个环境都有不同的.config文件(app.production.json,app.staging.json),我只想拥有另一个app.release.config文件。

从我的使用环境不同的理解,我的JSON应该是这样的:

{ 
    "LogLevel" : Debug 
} 

它将取代我appsettings.json原始值。但是,就像我提到的,我不想进入文件进行变化。

.NET Core中是否有这样的功能?

{ 
    "LogLevel" : #{Project.LogLevel} 
} 

回答

0

enter image description here好吧,这样做是有两个独立的appsettings.json文件与每个相应的LogLevel每个环境的一种方式。

现在的章鱼,创建一个variable名为Environment设置的值,并应用适当的范围(开发/分期/生产),并在*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") 
+0

有没有类似于八达通中的JSON文件的XDT转换?想要使用Octopus来改变变量,而不是使用硬编码的不同变量的多个环境JSON文件。或者,这种方式是现在改变变量的唯一方法吗? – m1771vw

+0

我没有亲自尝试过这一点,但是你可以将所有变量移动到web.config文件中,并在你的'startup'中使用'AddXMLFile'。cs' - 将更新我上面的答案,以反映相同的结果 – Jaya

+1

进一步研究之后(将需要测试以查看这是否是我需要的),但是Octopus目前实现了JSON转换 - 如果您设置了Octopus变量“ foo“改为值”bar“,它会被写入到目标JSON文件中作为”{“foo”:“bar”}。 [This](http://docs.octopusdeploy.com/display/OD/JSON+Configuration+Variables+Feature)实际上位于您提供的链接的底部,直到我再次阅读它时才完全理解今天,但我确实认为这就是我一直在寻找的!如果这项工作有效,以后还会更新答案。 – m1771vw