2016-09-19 16 views
13

Tôi có ứng dụng giao diện điều khiển .NET Core 1.0.0 và hai môi trường. Tôi cần có thể sử dụng appSettings.dev.jsonappSettings.test.json dựa trên các biến môi trường mà tôi đặt vào thời gian chạy. Điều này có vẻ là khá thẳng về phía trước cho các ứng dụng web ASP.NET Core, thông qua tiêm phụ thuộc và IHostingEnvironment và EnvironmentName env. biến, tuy nhiên làm thế nào tôi nên dây những thứ lên cho các ứng dụng giao diện điều khiển (bên cạnh việc viết mã tùy chỉnh của riêng tôi sử dụng Microsoft.Framework.Configuration.EnvironmentVariables)?Ứng dụng giao diện điều khiển .NET Core, cách định cấu hình appSettings cho mỗi môi trường?

Cảm ơn bạn.

Trả lời

20

Đây là cách chúng tôi thực hiện trong ứng dụng giao diện điều khiển .netcore của chúng tôi. Chìa khóa ở đây là bao gồm quyền phụ thuộc vào dự án của bạn cụ thể là (có thể không phải tất cả, hãy kiểm tra dựa trên nhu cầu của bạn) và sao chép vào sản lượng appSetting.json như một phần của buildoptions bạn

{ 
     "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

Cảm ơn bạn. Cuối cùng tôi đã kết thúc bằng cách sử dụng một phiên bản phức tạp hơn của điều đó, bằng cách sử dụng 'new ConfigurationBuilder(). AddEnvironmentVariables()' và tìm 'ASPNETCORE_ENVIRONMENT'. – user2916547

+0

Tôi dường như không tìm thấy một bản dựng trong ứng dụng bảng điều khiển. – liang

1

Bạn có thể làm điều này cho biến môi trường ASP.Net Core (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 } 
} 

Sau đó, bạn chỉ có thể sử dụng thuộc tính

public static void Main(string[] args) { 
     if (Development){ 
      // Blow up the planet 
     } 
    } 
+0

Câu hỏi không phải về cốt lõi asp.net. –

+0

Tôi biết, nhưng * chỉ * những thứ về điều này là từ xa asp.net lõi liên quan là tên của biến môi trường và thư viện lõi .net được sử dụng để có được các hằng số chuỗi cho 'Phát triển', 'dàn dựng' & 'sản xuất '. Tôi nghĩ rằng sẽ hữu ích khi sử dụng biến môi trường hợp pháp thay vì một biến thể của tôi. Nó có thể là bất cứ điều gì và không được trong một ứng dụng cốt lõi asp.net cả. –

Các vấn đề liên quan