Özel konfigürasyon dosyalarını yükleme


119

Statik ConfigurationManager.OpenExe(exePath)yöntemle bir derlemeyle ilgili yapılandırma dosyalarını açabileceğimi biliyorum, ancak yalnızca bir derlemeyle ilgili olmayan bir yapılandırma açmak istiyorum. Sadece standart bir .NET yapılandırma dosyası.

Yanıtlar:


245

Ricky'nin gönderdiği makaleler çok iyi, ancak maalesef sorunuza cevap vermiyorlar.

Sorununuzu çözmek için şu kod parçasını denemelisiniz:

ExeConfigurationFileMap configMap = new ExeConfigurationFileMap();
configMap.ExeConfigFilename = @"d:\test\justAConfigFile.config.whateverYouLikeExtension";
Configuration config = ConfigurationManager.OpenMappedExeConfiguration(configMap, ConfigurationUserLevel.None);

Yapılandırma içinde bir değere erişmeniz gerekirse, dizin operatörünü kullanabilirsiniz:

config.AppSettings.Settings["test"].Value;

1
@Oliver derken whateverYouLikeExtension, sonra bir şeyler yapmanız gerektiğini mi söylüyorsunuz ? config.
Svish

4
@Oliver Şimdi denemek için etrafta dolaştım ve olmadan iyi çalışıyor gibi görünüyor :)
Svish

1
Bunu yaptım, ancak ConfigurationManager.ConnectionStrings'e eriştiğimde hala eski verileri alıyorum. Neyi kaçırıyorum?
MAW74656

1
@ MAW74656: Erişmek zorunda değilsiniz ConfigurationManager.ConnectionStrings. Bunun yerine config, yukarıdaki son ifadeden döndürülen nesnenin değerini okumanız gerekir .
Oliver

3
Bu yapıldıktan sonra appSettings'in nasıl alınacağını arayan başka herkes için: var foo = config.AppSettings.Settings ["test"]. Değer;
Roro

8

Yapılandırma dosyası yalnızca bir XML dosyasıdır, şu şekilde açabilirsiniz:

private static XmlDocument loadConfigDocument()
{
    XmlDocument doc = null;
    try
    {
        doc = new XmlDocument();
        doc.Load(getConfigFilePath());
        return doc;
    }
    catch (System.IO.FileNotFoundException e)
    {
        throw new Exception("No configuration file found.", e);
    }
    catch (Exception ex)
    {
        return null;
    }
}

ve daha sonra değerleri almak için:

    // retrieve appSettings node

    XmlNode node =  doc.SelectSingleNode("//appSettings");

Sonrasında ulaşılamayan kod tespit edildi throw new Exception("No configuration file found.", e);.
Oybek

Dönüş boşluğunu kaldıracağım, gerçekten ulaşılmayacak.
Otávio Décio

7
.Net kitaplığından bu kadar harika dersleriniz varken neden XML kullanmalısınız? Bunu kullanmayı önermem, tasarım açısından zayıf. Sıradaki ne? farklı bir dizge sınıfı uygulayın ... bunu düşünün.
Yuki

@ OtávioDécio Özel .config dosyasında izlemeyi etkinleştirmek için system.diagnostics ekleyebilir miyim?
FaizanHussainRabbani

@FaizanRabbani özel izleme konusunda emin değil, ancak msdn.microsoft.com/en-us/library/ms733025(v=vs.110).aspx'e göre yapılandırma dosyasına teşhis ekleyebilmelisiniz.
Otávio Décio

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.