Apa itu App.config dalam C # .NET? Bagaimana cara menggunakannya?

179

Saya telah melakukan proyek di C # .NET di mana file database saya adalah buku kerja Excel. Karena lokasi string koneksi sulit dikodekan dalam pengkodean saya, tidak ada masalah untuk menginstalnya di sistem saya, tetapi untuk sistem lain ada.

Apakah ada cara untuk meminta pengguna untuk menetapkan jalur setelah pengaturan aplikasi selesai?

Jawaban yang saya dapatkan adalah "Gunakan App.Config" ... adakah yang bisa tahu apa itu App.config dan bagaimana menggunakannya dalam konteks saya di sini?

shyam
sumber
4
kemungkinan duplikat untuk Apa app.config?
pengguna

Jawaban:

190

Paling sederhana, app.config adalah file XML dengan banyak bagian konfigurasi yang tersedia dan dukungan untuk bagian konfigurasi khusus. "Bagian konfigurasi" adalah potongan XML dengan skema yang dimaksudkan untuk menyimpan beberapa jenis informasi.

Pengaturan dapat dikonfigurasi menggunakan bagian konfigurasi bawaan seperti connectionStringsatau appSettings. Anda dapat menambahkan bagian konfigurasi khusus Anda sendiri; ini adalah topik lanjutan, tetapi sangat kuat untuk membangun file konfigurasi yang sangat diketik.

Aplikasi web biasanya memiliki web.config, sedangkan Windows GUI / aplikasi layanan memiliki file app.config.

File konfigurasi tingkat aplikasi mewarisi pengaturan dari file konfigurasi global, mis. Machine.config.

Membaca dari App.Config

String koneksi memiliki skema yang telah ditentukan yang dapat Anda gunakan. Perhatikan bahwa cuplikan kecil ini sebenarnya file app.config (atau web.config) yang valid:

<?xml version="1.0"?>
<configuration>
    <connectionStrings>   
        <add name="MyKey" 
             connectionString="Data Source=localhost;Initial Catalog=ABC;"
             providerName="System.Data.SqlClient"/>
    </connectionStrings>
</configuration>

Setelah mendefinisikan app.config, Anda dapat membacanya dalam kode menggunakan kelas ConfigurationManager . Jangan terintimidasi oleh contoh-contoh MSDN verbose; sebenarnya cukup sederhana.

string connectionString = ConfigurationManager.ConnectionStrings["MyKey"].ConnectionString;

Menulis ke App.Config

Sering mengubah file * .config biasanya bukan ide yang baik, tetapi sepertinya Anda hanya ingin melakukan pengaturan satu kali.

Lihat: Ubah string koneksi & muat ulang app.config pada saat run time yang menjelaskan cara memperbarui connectionStringsbagian file * .config saat runtime.

Perhatikan bahwa idealnya Anda akan melakukan perubahan konfigurasi seperti itu dari penginstal sederhana.

Lokasi App.Config di Runtime

T : Misalkan saya secara manual mengubah beberapa <value>di app.config, simpan dan tutup. Sekarang ketika saya pergi ke folder bin saya dan meluncurkan file .exe dari sini, mengapa itu tidak mencerminkan perubahan yang diterapkan?

A : Ketika Anda mengompilasi aplikasi, app.config-nya disalin ke direktori bin 1 dengan nama yang cocok dengan exe Anda. Misalnya, jika exe Anda bernama "test.exe", harus ada "text.exe.config" di direktori bin Anda. Anda dapat mengubah konfigurasi tanpa kompilasi ulang, tetapi Anda harus mengedit file konfigurasi yang dibuat pada waktu kompilasi, bukan app.config yang asli.

1: Perhatikan bahwa file web.config tidak dipindahkan, tetapi tetap berada di lokasi yang sama pada waktu kompilasi dan penyebaran. Satu pengecualian untuk ini adalah ketika web.config diubah .

.NET Core

Opsi konfigurasi baru diperkenalkan dengan .NET Core. Cara file * .config berfungsi tampaknya tidak berubah, tetapi pengembang bebas memilih paradigma konfigurasi baru yang lebih fleksibel.

Tim Medora
sumber
Lihat juga: codeproject.com/Articles/16466/… untuk ikhtisar yang bagus tentang cara kerja file config
BKSpurgeon
56

Secara sederhana, App.config adalah XMLformat file berbasis yang menampung Konfigurasi Level Aplikasi .

Contoh:

<?xml version="1.0"?>
<configuration>
  <appSettings>
    <add key="key" value="test" />
  </appSettings>
</configuration>

Anda dapat mengakses konfigurasi dengan menggunakan ConfigurationManagerseperti yang ditunjukkan pada potongan kode di bawah ini:

var value = System.Configuration.ConfigurationManager.AppSettings["key"];
// value is now "test"

Catatan: ConfigurationSettings adalah metode usang untuk mengambil informasi konfigurasi.

var value = System.Configuration.ConfigurationSettings.AppSettings["key"];
Furqan Safdar
sumber
21
Anda perlu referensi System.Configuration.dlluntuk menggunakan API yang disebutkan di atas.
KFL
2
Untuk satu, Anda tidak harus menyimpan string koneksi di bagian AppSettings, mereka pergi di bagian ConnectionStrings. Untuk dua, Visual Studio akan menghasilkan properti yang diketik kuat untuk pengaturan Anda jika Anda membuatnya dengan benar melalui desainer, Anda tidak perlu mengetikkan nama kunci secara manual (seperti Anda berada di kode di atas).
BrainSlugs83
1
Kami tidak berbicara tentang praktik terbaik di sini melainkan solusi untuk masalah OP.
Furqan Safdar
2
System.Configuration.ConfigurationManager.AppSettings["Key"]adalah string yang sudah, memanggilnya ToString()berlebihan.
Bogdan Stăncescu
4

Hanya untuk menambahkan sesuatu yang saya lewatkan dari semua jawaban - bahkan jika itu tampak konyol dan jelas segera setelah Anda tahu:

File tersebut harus dinamai "App.config" atau "app.config" dan dapat ditemukan di proyek Anda pada level yang sama dengan mis. Program.cs.

Saya tidak tahu apakah lokasi lain memungkinkan, nama lain (seperti application.conf, seperti yang disarankan dalam dokumentasi ODP.net) tidak berfungsi untuk saya.

PS. Saya mulai dengan Visual Studio Code dan membuat proyek baru dengan "dotnet new". Tidak ada file konfigurasi yang dibuat dalam kasus ini, saya yakin ada kasus lain. PPS. Anda mungkin perlu menambahkan paket nuget untuk dapat membaca file konfigurasi, dalam kasus .NET CORE itu akan menjadi "dotnet add package System.Configuration.ConfigurationManager --version 4.5.0"

Dantel35
sumber
ini yang saya cari. Perlu tahu pada level apa untuk memasukkannya. Beberapa program / kerangka kerja terlihat di folder seperti/resources
alex
3

App.Config adalah file XML yang digunakan sebagai file konfigurasi untuk aplikasi Anda. Dengan kata lain, Anda menyimpan di dalamnya pengaturan apa pun yang mungkin ingin Anda ubah tanpa harus mengubah kode (dan mengkompilasi ulang). Ini sering digunakan untuk menyimpan string koneksi.

Lihat artikel MSDN ini tentang cara melakukannya.

Sistem Down
sumber
1

Anda dapat mengakses kunci di App.Config menggunakan:

ConfigurationSettings.AppSettings["KeyName"]

Ambil bagian di Thread ini

CloudyMarble
sumber
16
itu dianggap usang sekarang
mikus
0

Hanya menambahkan satu poin lagi

Menggunakan app.config bagaimana Anda dapat mengontrol akses aplikasi, Anda ingin menerapkan perubahan tertentu ke seluruh aplikasi menggunakan file konfigurasi aplikasi dan Anda dapat mengakses pengaturan seperti di bawah ini ConfigurationSettings.AppSettings ["Key"]

Gummadidala Shiva
sumber