2010-12-01 3 views
12

프로그램을 실행할 때 null을 반환하지만 내 작업 디렉토리에 저장된 App.config 파일에서 값을 검색하려고합니다. 나는 이것이 왜 그렇게 혼란스럽고 오류를 발견하기 위해 여러 번 코드를 살펴 보았습니다.ConfigurationManager가 문자열 값 대신 null을 반환합니다.

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; 

     ... 

이 코드를 실행하면, 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> 

가 여기 내 C# 코드입니다 :

여기 내 app.config 파일의 코드입니다.

나는 System.Configuration.dll을 참조했습니다.

+2

을 실행

이 도움이

희망은, 당신의 app.config가 실행 파일 .. IE에서 제대로 전개되고 ... 괜찮습니다. exe.config' 파일? –

+1

App.Config가 사용되는 템플릿입니다. 실제 설정 파일은 "Program.Exe.Config"파일이 될 것입니다. 이 작업은 프로젝트를 컴파일 할 때 수행해야합니다. –

+2

혹시 DLL 프로젝트에 설정을 추가 했습니까? – Aliostad

답변

15

구성 파일이 응용 프로그램을 실행하는 디렉토리에 올바르게 배치되었는지 확인 했습니까? 실제로 해당 디렉토리에 <이라는 응용 프로그램 이름 > .exe.config라는 파일이 있습니까?

저는 여기서 추측하고 있습니다. 어쩌면 다른 프로젝트에 App.Config 파일을 추가 한 다음 exe 어셈블리 프로젝트를 추가했을 것입니다 ...?

그건 그렇고, 나는 당신의 코드와 App.Config를 깨끗한 프로젝트로 복사했고,이 코드는 나를 위해 일했다. 그래서 나는 코드 자체가 아닌 config 파일의 방향을 살펴볼 것입니다. ? 실행중인 디렉토리에`가능 ApplicationName가 존재하지 않습니다 : 코드는

+0

그러나이 폴더와이 프로젝트와 관련된 다른 폴더 중 어느 것도 .exe.config 파일이 없는데도 bin \ Debug 폴더에 App.config 파일을 저장합니다. 이것은 라이브러리가 아니라 실행 파일입니다. 프로젝트 정리 및 재구성을 시도했지만이 파일은 나타나지 않습니다. – TheBoss

+7

App.config 파일을 수동으로 복사하면 안됩니다. 빌드 할 때 자동으로 복사되고 이름이 변경됩니다. 어쩌면 방금 "응용 프로그램 구성"항목을 추가하는 대신 App.config라는 파일을 프로젝트에 추가했을 것입니다. 실행 가능한 프로젝트에 다시 추가 할 수 있습니다. – Ran

+0

** "어쩌면 방금"응용 프로그램 구성 "항목을 추가하는 대신 App.config라는 파일을 프로젝트에 추가했습니다."** 정답입니다. 고마워 라. – TheBoss

관련 문제