2010-12-01 34 views
12

Çalışma dizinimde saklanan App.config dosyasındaki değerleri almaya çalışıyorum, ancak programı çalıştırdığımda null değerini döndürür. Bunun neden böyle olduğu konusunda kafam çok karışık ve bir hatayı tespit etmek için birçok kez kodun üzerine bakmış.ConfigurationManager dize değerleri yerine null değerini döndürür

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Configuration; 
using System.Data; 
using System.Data.Common; 

namespace DataProviderFun 
{ 
    class Program 
    { 
    static void Main(string[] args) 
    { 
     string p = ConfigurationManager.AppSettings["provider"]; 
     string c = ConfigurationManager.ConnectionStrings["connection"].ConnectionString; 

     ... 

Bu kodu çalıştırdığınızda, p = null c = null:

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <appSettings> 
    <add key="provider" value="System.Data.SqlClient" /> 
    </appSettings> 
    <connectionStrings> 
    <add name="connection" connectionString="Data Source=(local)\SQLEXPRESS;Initial Catalog=Autos;Integrated Security=True;Pooling=False" /> 
    </connectionStrings> 
</configuration> 

İşte benim C# kodu:

İşte benim App.config dosya kodudur.

System.Configuration.dll dosyasını başvuruyor.

+2

Ran

bu yardımcı olur

Umut, senin app.config sizin yürütülebilir .. IE ile düzgün dağıtılırken mı ... gayet iyi. exe.config' dosyası? –

+1

App.Config kullanılan şablondur. Gerçek yapılandırma dosyası "Program.Exe.Config" dosyası olacak. Bu projeyi derlediğinizde yapılmalıdır. –

+2

Yapılandırma bir DLL projesine herhangi bir şans eklediniz mi? – Aliostad

cevap

15

Yapılandırma dosyasının, uygulamayı çalıştırdığınız dizinde doğru şekilde yerleştirildiğinden emin misiniz? Bu dizinde aslında < uygulama adı > .exe.config adlı bir dosya var mı?

Sadece burada tahmin ediyorum - belki de App.Config dosyasını farklı bir projeye eklediniz, sonra exe montaj projeniz ...?

Bu arada, kodunuzu ve App.Config dosyasını temiz bir projeye kopyaladım ve bu kod benim için çalıştı. Yani kod dosyasında değil, yapılandırma dosyasının yönüne bakarım. ? Yürütülmesi dizinde bir `ApplicationName orada mevcut yapar: Kod

+0

App.config dosyasını bin \ Debug klasörüne koyarım, ancak bu klasör ve bu projeyle ilişkili diğer klasörlerin hiçbiri bir .exe.config dosyası içeriyor. Bu bir yürütülebilir değil, bir kütüphanedir. Temizlemeyi ve projeyi yeniden oluşturmayı denedim ancak bu dosya görünmüyor. – TheBoss

+7

App.config dosyasını el ile kopyalamamalısınız. Oluşturulma zamanında otomatik olarak kopyalanması ve yeniden adlandırılması gerekiyor. Belki de bir "uygulama yapılandırması" öğesi eklemek yerine projenize App.config adlı bir dosya eklediniz? Yeniden yürütülebilir projeye eklemeyi deneyebilirsiniz. – Ran

+0

** "Belki de bir" uygulama yapılandırması "öğesi eklemek yerine projenize App.config adlı bir dosya eklediniz" ** doğru cevaptır. Teşekkürler Ran. – TheBoss

İlgili konular