2016-12-03 3 views
2

ASP.NET 4에서 app.config XML을 사용하여 내 변수를 Octopus 변수로 변환 할 수있었습니다.Appsettings 변수 변환

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

.NET 코어와 비슷한 솔루션을 둘러 보려고했지만 적절한 환경에 대한 제안 만 찾을 수있었습니다. 각 환경 (app.production.json, app.staging.json)마다 다른 .config 파일을 사용하지 않으려면 다른 app.release.config 파일을 갖고 싶습니다.

{ 
    "LogLevel" : Debug 
} 

을 그리고 내 appsettings.json의 원래 값을 대체합니다 : 서로 다른 환경을 사용하여에 대한 이해에서

, 내 JSON은 다음과 같을 것입니다. 그러나, 내가 언급 한 것처럼, 나는 변화하는 변화를 만들기 위해 파일에 들어가고 싶지 않다.

.NET Core에는 이와 같은 유연성이있는 기능이 있습니까?

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

답변

0

enter image description here 음, 각각의 해당 LogLevel에 각 환경에 두 개의 분리 된 appsettings.json 파일이하는 일을 한 가지 방법. 옥토에 이제

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 파일에 모든 구성 설정을 움직일 수있다 - 면책 조항 : 나는 그것을 개인적으로 시도하지 않았습니다. 위의 방법을 ollowed - 다른 appSetting.json 파일을 가지고. 나는 Swagger 설정을위한 xml 파일을 추가 할 수 있다는 사실을 기반으로 이것을 말하고 있으므로 web.config 파일에서도 작동 할 수 있다고 제안합니다.

var builder = new ConfigurationBuilder().AddXmlFile("Web.config") 
+0

Octopus의 XDT Transform for JSON 파일과 비슷한 것이 있습니까? Octopus를 사용하여 다른 변수가있는 여러 환경의 JSON 파일을 하드 코딩하지 않고 변수를 변경하고 싶습니다. 아니면 지금이 방법으로 변수를 변경할 수있는 유일한 방법입니까? – m1771vw

+0

개인적으로이 방법을 사용하지는 않았지만, 모든 변수를 web.config 파일로 옮기고'시작에서'AddXMLFile'을 사용할 수 있습니다.cs' - 내 대답을 업데이트 할 것입니다. – Jaya

+1

더 자세히 살펴보면 (내가 필요한 것이 있는지 테스트 해 볼 필요가 있습니다), Octopus에는 현재 JSON Transforms가 구현되어 있습니다. Octopus 변수를 " foo "를 값"bar "로 변경하면 대상 JSON 파일에'{"foo ":"bar "}'로 기록됩니다. [This] (http://docs.octopusdeploy.com/display/OD/JSON+Configuration+Variables+Feature) 실제로 제공된 링크의 맨 아래에 있었는데 다시 읽지 않으면 이해가되지 않습니다. 오늘,하지만이게 내가 찾고 있었던 것 같아! 나중에 해결되면 답변도 나중에 업데이트됩니다. – m1771vw