Saya punya metode yang membaca pengaturan dari file konfigurasi saya seperti ini:
var value = ConfigurationManager.AppSettings[key];
Ini dikompilasi dengan baik ketika menargetkan .NET Standard 2.0 saja.
Sekarang saya membutuhkan banyak target, jadi saya memperbarui file proyek saya dengan:
<TargetFrameworks>netcoreapp2.0;net461;netstandard2.0</TargetFrameworks>
Tapi sekarang, kompilasi gagal netcoreapp2.0
dengan pesan kesalahan berikut:
Error CS0103 The name 'ConfigurationManager' does not exist in the current context (netcoreapp2.0)
Secara terpisah, saya membuat aplikasi konsol .NET Core 2.0 baru (kali ini hanya menargetkan .NET Core 2.0), tetapi juga tampaknya tidak ada di ConfigurationManager
bawah namespace System.Configuration
.
Saya cukup bingung karena ini tersedia di bawah .NET Standard 2.0, jadi saya berharap ini akan tersedia di .NET Core 2.0, karena .NET Core 2.0 sesuai dengan .NET Standard 2.0.
Apa yang saya lewatkan?
c#
.net-core
app-config
.net-standard
Alex Sanséau
sumber
sumber
It compiles fine when targeting .NET Standard 2.0 only
- ini tidak benar, karenaConfigurationManager
bukan bagian dari .NET Standard (sejauh ini benar hingga v.2.1).Jawaban:
Ya,
ConfigurationManager.AppSettings
tersedia dalam .NET Core 2.0 setelah mereferensikan paket NuGetSystem.Configuration.ConfigurationManager
.Penghargaan diberikan kepada @JeroenMostert karena telah memberi saya solusinya.
sumber
<add key="YourSetting" value="YourValue" />
.NET Framework 4.6
sebagai ketergantungan. Apakah itu berarti bahwa proyek` .NET Core` saya tidak lagi menjadiCore
proyek murni ?Saya menginstal
System.Configuration.ConfigurationManager
dari Nuget ke dalam aplikasi .net core 2.2 saya.Saya kemudian referensi
using System.Configuration;
Selanjutnya, saya berubah
Sejauh ini saya yakin ini benar.
4.5.0 is typical with .net core 2.2
Saya tidak punya masalah dengan ini.
sumber
Setelah Anda menyiapkan paket, Anda harus membuat app.config atau web.config dan menambahkan sesuatu seperti berikut:
<configuration> <appSettings> <add key="key" value="value"/> </appSettings> </configuration>
sumber
Rangkaian panduan terbaru adalah sebagai berikut: (dari https://docs.microsoft.com/en-us/azure/azure-functions/functions-dotnet-class-library#environment-variables )
Menggunakan:
System.Environment.GetEnvironmentVariable(name, EnvironmentVariableTarget.Process);
Dari dokumen:
public static class EnvironmentVariablesExample { [FunctionName("GetEnvironmentVariables")] public static void Run([TimerTrigger("0 */5 * * * *")]TimerInfo myTimer, ILogger log) { log.LogInformation($"C# Timer trigger function executed at: {DateTime.Now}"); log.LogInformation(GetEnvironmentVariable("AzureWebJobsStorage")); log.LogInformation(GetEnvironmentVariable("WEBSITE_SITE_NAME")); } public static string GetEnvironmentVariable(string name) { return name + ": " + System.Environment.GetEnvironmentVariable(name, EnvironmentVariableTarget.Process); } }
sumber
using static System.Environment;
Anda dapat menggunakan Konfigurasi untuk mengatasi ini.
Contoh (Startup.cs):
Anda dapat meneruskan DI ke pengontrol setelah implementasi ini.
public class Startup { public Startup(IHostingEnvironment env) { var builder = new ConfigurationBuilder() .SetBasePath(env.ContentRootPath) .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true); Configuration = builder.Build(); } public IConfiguration Configuration { get; } // This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { var microserviceName = Configuration["microserviceName"]; services.AddSingleton(Configuration); ... }
sumber