2016-12-03 33 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