2016-09-19 26 views
13

Bir .NET Core 1.0.0 konsol uygulaması ve iki ortama sahibim. Çalışma zamanında belirlediğim ortam değişkenlerine dayanarak appSettings.dev.json ve appSettings.test.json kullanabilmem gerekir. Bu, bağımlılık enjeksiyonu ve IHostingEnvironment ve EnvironmentName env ile ASP.NET Core web uygulamaları için oldukça düz görünüyor. değişkeni, ancak konsol uygulaması için işleri nasıl kurmalıyım (Microsoft.Framework.Configuration.EnvironmentVariables'u kullanan kendi özel kodumu yazmanın yanı sıra)?.NET Core konsol uygulaması, ortam başına appSettings nasıl yapılandırılır?

Teşekkür ederiz.

cevap

20

Bu, bizim .netcore konsol uygulamasında bunu nasıl yapıyoruz. Burada anahtar (ihtiyaçlarınız dayalı onay hepsi değil olabilir) bağımlılıkları projenizde yani hakkını kapsam içine almak ve buildoptions parçası olarak çıkışına appSetting.json kopyalamaktır

{ 
     "Microsoft.Extensions.Configuration": "1.0.0", 
     "Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0", 
     "Microsoft.Extensions.Configuration.FileExtensions": "1.0.0", 
     "Microsoft.Extensions.Configuration.Json": "1.0.0", 
    } 
    "buildOptions": { 
    "emitEntryPoint": true, 
    "copyToOutput": { 
     "include": [ 
     "appsettings*.json", 
     "App*.config" 
       ] 
      } 
}, 

    using Microsoft.Extensions.Configuration; 
    namespace MyApp 
    { 
    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(); 
     Configuration = builder.Build(); 
     var myConnString= Configuration.GetConnectionString("SQLConn"); 
    } 

}

+2

özelliğini kullanabilirsiniz. Teşekkür ederiz. Sonunda, 'yeni ConfigurationBuilder(). AddEnvironmentVariables() 'kullanarak ve' ASPNETCORE_ENVIRONMENT' ifadesini kullanarak, daha da kıvrımlı bir sürümünü kullanarak sona erdirdim. – user2916547

+0

Konsol uygulamasında bir derleme bulmuyorum. – liang

1

Sen ASP.Net Çekirdek ortam değişkeni için yapabilir (ASPNETCORE_ENVIRONMENT): -

using Microsoft.AspNetCore.Hosting; 
using System; 

public class Program { 
    private static string HostingEnvironment => Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT"); 
    private static bool IsEnvironment(string environmentName) => HostingEnvironment?.ToLower() == environmentName?.ToLower() && null != environmentName; 

    private static bool Development => IsEnvironment(EnvironmentName.Development); 
    private static bool Production => IsEnvironment(EnvironmentName.Production); 
    private static bool Staging => IsEnvironment(EnvironmentName.Staging); 

    public static void Main(string[] args) { // Your code here } 
} 

Sonra sadece

+0

Soru, asp.net çekirdeği ile ilgili değildi. –

+0

Biliyorum, ama uzaktan * asp.net ile ilgili olan * * * ile ilgili şeyler, 'Değişim', 'Evreleme' ve 'Üretim için dizge sabitlerini almak için kullanılan ortam değişkeninin ve .net çekirdek kitaplığının adıdır. '. Yaptığımın yerine meşru bir ortam değişkeni kullanmanın yararlı olacağını düşündüm. Bir şey olabilir ve bir asp.net çekirdek uygulamasında hiç olmayabilir. –

İlgili konular