C # .NET App.config nedir? Bu nasıl kullanılır?


179

C # .NET'te veritabanı dosyamın Excel çalışma kitabı olduğu bir proje yaptım. Bağlantı dizesinin konumu kodlamamda sabit olarak kodlandığından, sistemime kurmak için bir sorun yoktur, ancak diğer sistemler için vardır.

Uygulamanın kurulumu tamamlandıktan sonra kullanıcıdan bir yol belirlemesini istemenin bir yolu var mı?

Aldığım cevaplar "App.Config Kullan" oldu ... Herkes bu App.config nedir ve burada benim bağlamda nasıl kullanılacağını söyleyebilir?


Yanıtlar:


190

En basit haliyle, app.config, önceden tanımlanmış birçok yapılandırma bölümü ve özel yapılandırma bölümleri desteği olan bir XML dosyasıdır. "Yapılandırma bölümü", bir tür bilgiyi depolamayı amaçlayan şemaya sahip bir XML snippet'idir.

Ayarlar, connectionStringsveya gibi yerleşik yapılandırma bölümleri kullanılarak yapılandırılabilir.appSettings . Kendi özel yapılandırma bölümlerinizi ekleyebilirsiniz; bu gelişmiş bir konudur, ancak güçlü yazılan yapılandırma dosyaları oluşturmak için çok güçlüdür.

Web uygulamalarında genellikle web.config, Windows GUI / hizmet uygulamalarında app.config dosyası bulunur.

Uygulama düzeyindeki yapılandırma dosyaları, ayarları global yapılandırma dosyalarından, örneğin machine.config'den devralır.

App.Config'den okuma

Bağlantı dizeleri, kullanabileceğiniz önceden tanımlanmış bir şemaya sahiptir. Bu küçük snippet'in aslında geçerli bir app.config (veya web.config) dosyası olduğuna dikkat edin:

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

App.config dosyanızı tanımladıktan sonra, ConfigurationManager sınıfını kullanarak kodda okuyabilirsiniz . Ayrıntılı MSDN örnekleriyle korkutmayın; aslında oldukça basit.

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

App.Config dosyasına yazma

* .Config dosyalarını sık sık değiştirmek genellikle iyi bir fikir değildir, ancak yalnızca bir kerelik kurulum yapmak istediğiniz gibi geliyor.

Bkz. Bağlantı dizesini değiştirme ve çalışma zamanındaconnectionStrings * .config dosyasının bölümünün nasıl güncelleştirileceğini açıklayan app.config dosyasını yeniden yükleyin .

İdeal olarak, bu tür yapılandırma değişikliklerini basit bir yükleyiciden yapacağınızı unutmayın.

Çalışma Zamanında App.Config Konumu

S : Diyelim ki <value>app.config dosyasındaki bazı öğeleri el ile değiştirdim , kaydedin ve sonra kapatın. Şimdi bin klasörüne gidip .exe dosyasını buradan başlattığımda, uygulanan değişiklikleri neden yansıtmıyor?

Y : Bir uygulamayı derlediğinizde, app.config dosyası, exe'nizle eşleşen bir adla bin dizinine 1 kopyalanır . Örneğin, exe'niz "test.exe" olarak adlandırılmışsa, bin dizininizde bir "text.exe.config" olmalıdır. Yeniden derleme yapmadan yapılandırmayı değiştirebilirsiniz, ancak orijinal app.config dosyasını değil, derleme zamanında oluşturulan yapılandırma dosyasını düzenlemeniz gerekir.

1: web.config dosyalarının taşınmadığını, bunun yerine derleme ve dağıtım sırasında aynı konumda kaldıklarını unutmayın. Bunun bir istisnası, bir web.config dosyasının dönüştürülmesidir .

.NET Core

.NET Core ile yeni yapılandırma seçenekleri sunuldu. * .Config dosyalarının çalışma şekli değişmiş gibi görünmüyor, ancak geliştiriciler yeni, daha esnek yapılandırma paradigmaları seçmekte özgürler.


Ayrıca bkz . Config dosyalarının nasıl çalıştığına dair mükemmel bir genel bakış için codeproject.com/Articles/16466/…
BKSpurgeon

56

Basitçe, App.config , Uygulama Düzeyi YapılandırmalarınıXML barındıran temel bir dosya biçimidir .

Misal:

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

ConfigurationManagerAşağıdaki kod snippet'inde gösterildiği gibi kullanarak konfigürasyonlara erişebilirsiniz :

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

Not: ConfigurationSettings yapılandırma bilgilerini almak için kullanılmayan bir yöntemdir.

var value = System.Configuration.ConfigurationSettings.AppSettings["key"];

21
System.Configuration.dllYukarıda belirtilen API'ları kullanmak için referans vermeniz gerekir .
KFL

2
Birincisi, bağlantı dizelerini AppSettings bölümünde saklamamalısınız, bunlar ConnectionStrings bölümüne gider. İkiincisi, Visual Studio ayarlarınızı tasarımcı aracılığıyla düzgün bir şekilde oluşturursanız, güçlü yazılan özellikler üretecektir, hiçbir zaman manuel olarak bir anahtar adı yazmanıza gerek yoktur (yukarıdaki kodda olduğu gibi).
BrainSlugs83

1
Burada en iyi uygulamalardan değil, OP sorununun çözümünden bahsediyoruz.
Furqan Safdar

2
System.Configuration.ConfigurationManager.AppSettings["Key"]zaten bir dizedir, çağırmak ToString()gereksizdir.
Bogdan Stăncescu

4

Sadece tüm cevaplardan eksik olduğum bir şey eklemek için - en kısa zamanda aptal ve açık gibi görünse bile:

Dosya "App.config" veya "app.config" olarak adlandırılmalıdır ve projenizde örneğin Program.cs ile aynı düzeyde bulunabilir.

Diğer konumların mümkün olup olmadığını bilmiyorum, diğer isimler (ODP.net belgelerinde önerildiği gibi application.conf gibi) benim için çalışmadı.

PS. Visual Studio Code ile başladım ve "dotnet new" ile yeni bir proje oluşturdum. Bu durumda hiçbir yapılandırma dosyası oluşturulmaz, başka durumlar olduğundan eminim. PPS. Yapılandırma dosyasını okuyabilmek için bir nuget paketi eklemeniz gerekebilir, .NET CORE durumunda "dotnet add paketi System.Configuration.ConfigurationManager --version 4.5.0"


Aradığım şey buydu. Hangi seviyeye ekleneceğini bilmek gerekiyordu. Bazı programlar / çerçeveler şu klasörlere bakar/resources
alex

3

App.Config, uygulamanız için bir yapılandırma dosyası olarak kullanılan bir XML dosyasıdır. Başka bir deyişle, kodu değiştirmek (ve yeniden derlemek) gerekmeksizin değiştirmek isteyebileceğiniz herhangi bir ayarı içinde saklarsınız. Genellikle bağlantı dizelerini saklamak için kullanılır.

Bunun nasıl yapılacağı ile ilgili bu MSDN makalesine bakın .


1

App.Config içindeki anahtarlara aşağıdakileri kullanarak erişebilirsiniz :

ConfigurationSettings.AppSettings["KeyName"]

Bu Konuya bir göz atın


16
artık kullanılmıyor
mikus

0

Sadece bir nokta daha ekleyerek

Uygulama erişimini nasıl kontrol edebileceğinizi app.config kullanarak, uygulama yapılandırma dosyasını kullanarak tüm uygulamaya özel değişiklik uygulamak istersiniz ve aşağıdaki gibi ConfigurationSettings.AppSettings ["Key"] ayarlarına erişebilirsiniz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.