Saya sedang mengerjakan pustaka kelas C # yang harus dapat membaca pengaturan dari file web.config
atau app.config
(tergantung pada apakah DLL dirujuk dari aplikasi web ASP.NET atau aplikasi Windows Forms).
Saya telah menemukan itu
ConfigurationSettings.AppSettings.Get("MySetting")
berfungsi, tetapi kode itu telah ditandai sebagai usang oleh Microsoft.
Saya telah membaca bahwa saya harus menggunakan:
ConfigurationManager.AppSettings["MySetting"]
Namun, System.Configuration.ConfigurationManager
kelas sepertinya tidak tersedia dari proyek Perpustakaan C # Class.
Apa cara terbaik untuk melakukan ini?
c#
.net
configuration
appsettings
Russ Clark
sumber
sumber
Jawaban:
Anda harus menambahkan referensi ke
System.Configuration
dalam folder referensi proyek Anda .Anda pasti harus menggunakan
ConfigurationManager
lebih dari usangConfigurationSettings
.sumber
Untuk contoh file app.config seperti di bawah ini:
Anda membaca pengaturan aplikasi di atas menggunakan kode yang ditunjukkan di bawah ini:
Anda mungkin juga perlu menambahkan referensi ke
System.Configuration
dalam proyek Anda jika belum ada. Anda kemudian dapat mengakses nilai-nilai seperti ini:sumber
Pembaruan untuk .NET Framework 4.5 dan 4.6; berikut ini tidak lagi berfungsi:
Sekarang akses kelas Pengaturan melalui Properti:
Lihat Mengelola Pengaturan Aplikasi untuk informasi lebih lanjut.
sumber
Klik kanan pada perpustakaan kelas Anda, dan pilih opsi "Tambahkan Referensi" dari Menu.
Dan dari tab .NET, pilih System.Configuration. Ini akan termasuk file System.Configuration DLL ke proyek Anda.
sumber
ConfigurationManager.ConnectionStrings[0].ConnectionString
Saya menggunakan ini, dan itu berfungsi dengan baik untuk saya:
sumber
Baca Dari Konfigurasi:
Anda harus menambahkan referensi ke konfigurasi:
Dapatkan Nilai dengan menggunakan kode berikut:
Simpan ke konfigurasi:
sumber
Anda harus menambahkan referensi ke unit System.Configuration ke proyek.
sumber
Anda mungkin menambahkan file App.config ke file DLL. App.Config hanya berfungsi untuk proyek yang dapat dieksekusi, karena semua file DLL mengambil konfigurasi dari file konfigurasi untuk file EXE yang sedang dieksekusi.
Katakanlah Anda memiliki dua proyek dalam solusi Anda:
Masalah Anda mungkin terkait dengan fakta bahwa Anda menyertakan file app.config ke SomeDLL dan bukan SomeExe. SomeDll dapat membaca konfigurasi dari proyek SomeExe.
sumber
Coba ini:
Dalam file web.config ini harus menjadi struktur berikutnya:
sumber
Saya memiliki masalah yang sama. Cukup baca seperti ini: System.Configuration.ConfigurationSettings.AppSettings ["MySetting"]
sumber
This method is obsolete, it has been replaced by System.Configuration!System.Configuration.ConfigurationManager.AppSettings
web.config
digunakan dengan aplikasi web.web.config
secara default memiliki beberapa konfigurasi yang diperlukan untuk aplikasi web. Anda dapat memilikiweb.config
untuk setiap folder di bawah aplikasi web Anda.app.config
digunakan untuk aplikasi Windows. Ketika Anda membangun aplikasi di Visual Studio, itu akan secara otomatis diubah namanya menjadi<appname>.exe.config
dan file ini harus dikirimkan bersama dengan aplikasi Anda.Anda dapat menggunakan metode yang sama untuk memanggil
app settings
nilai dari kedua file konfigurasi: System.Configuration.ConfigurationSettings.AppSettings ["Key"]sumber
System.Configuration.COnfigurationSettings.AppSettings.Get("Key")
daripada menggunakan tanda kurung siku.Ketika saya menemukan pendekatan terbaik untuk mengakses variabel pengaturan aplikasi secara sistematis dengan membuat kelas wrapper melalui System.Configuration seperti di bawah ini
Sekarang kita dapat mengakses variabel pengaturan yang diperlukan dengan nama kode keras menggunakan kelas lain seperti di bawah ini:
sumber
Saya sangat menyarankan Anda untuk membuat pembungkus untuk panggilan ini. Sesuatu seperti a
ConfigurationReaderService
dan menggunakan injeksi ketergantungan untuk mendapatkan kelas ini. Dengan cara ini Anda dapat mengisolasi file konfigurasi ini untuk tujuan pengujian.Jadi gunakan yang
ConfigurationManager.AppSettings["something"];
disarankan dan kembalikan nilai ini. Dengan metode ini Anda dapat membuat semacam pengembalian default jika tidak ada kunci yang tersedia di file .config.sumber
app.DEBUG.config
,app.RELEASE.config
, danapp.TEST.config
, dllAnda juga dapat menggunakan Formo :
Konfigurasi:
Kode:
sumber
Hanya untuk kelengkapan, ada opsi lain yang tersedia hanya untuk proyek web: System.Web.Configuration.WebConfigurationManager.AppSettings ["MySetting"]
Manfaat dari hal ini adalah tidak memerlukan referensi tambahan untuk ditambahkan, jadi mungkin lebih disukai untuk beberapa orang.
sumber
Langkah 1: Klik kanan pada tab referensi untuk menambahkan referensi.
Langkah 2: Klik pada tab Assemblies
Langkah 3: Cari 'System.Configuration'
Langkah 4: Klik OK.
Maka akan berhasil.
sumber
Saya selalu membuat antarmuka IConfig dengan properti typesafe dideklarasikan untuk semua nilai konfigurasi. Kelas implementasi Config kemudian membungkus panggilan ke System.Configuration. Semua panggilan System.Configuration Anda sekarang ada di satu tempat, dan jauh lebih mudah dan lebih bersih untuk memelihara dan melacak bidang mana yang sedang digunakan dan mendeklarasikan nilai standarnya. Saya menulis satu set metode pembantu pribadi untuk membaca dan mengurai tipe data umum.
Menggunakan IOC kerangka kerja Anda dapat mengakses IConfig ladang di mana saja aplikasi dalam Anda hanya lewat antarmuka untuk konstruktor kelas. Anda juga kemudian dapat membuat implementasi tiruan dari antarmuka IConfig dalam pengujian unit Anda sehingga sekarang Anda dapat menguji berbagai nilai konfigurasi dan kombinasi nilai tanpa perlu menyentuh file App.config atau Web.config Anda.
sumber
Solusi lain yang mungkin:
sumber
Saya telah mencoba menemukan perbaikan untuk masalah yang sama selama beberapa hari sekarang. Saya dapat menyelesaikan ini dengan menambahkan kunci di dalam tag pengaturan aplikasi di file web.config . Ini harus mengganti file .dll saat menggunakan helper.
sumber
Anda dapat menggunakan baris di bawah ini. Dalam kasus saya ini berfungsi: System.Configuration.ConfigurationSettings.AppSettings ["yourKeyName"]
Anda harus berhati-hati bahwa baris kode di atas juga merupakan versi lama dan sudah tidak digunakan lagi di perpustakaan baru.
sumber
ConfigurationManager bukanlah yang Anda butuhkan untuk mengakses pengaturan Anda sendiri.
Untuk melakukan ini, Anda harus menggunakan
{YourAppName}.Properties.Settings.{settingName}
sumber
Saya bisa mendapatkan pendekatan di bawah ini bekerja untuk proyek .NET Core:
Langkah:
Saya telah membuat metode Login () untuk menunjukkan penggunaan Kelas Konfigurasi.
Buat appsettings.json di proyek Anda dengan konten:
sumber
Jika Anda membutuhkan / ingin menggunakan
ConfigurationManager
kelas ...Anda mungkin perlu memuat
System.Configuration.ConfigurationManager
oleh Microsoft melalui Manajer Paket NuGetMicrosoft Documents
Satu hal yang patut dicatat dari dokumen ...
sumber
Silakan periksa versi .NET yang sedang Anda kerjakan. Itu harus lebih tinggi dari 4. Dan Anda harus menambahkan perpustakaan sistem System.Configuration ke aplikasi Anda.
sumber
Ini sebuah contoh:
App.config
sumber