기본 콘텐츠로 건너뛰기

[C#] .NET Configuration file :: App.config


프로그램의 옵션들을 담아 두는 파일로서 아주 예전에는 .INI 파일을 사용하였었으며, 이후 윈도우즈가 관리하는 레지스트리 데이타베이스에 시스템 및 응용프로그램의 옵션들을 저장하였다. 레지스트리는 프로그램의 옵션을 저장하는 훌륭한 저장 장소이나, 모든 응용프로그램이 항상 레지스트리에 데이타를 쓰는 권한을 갖는 것은 아니였기 때문에 Permission 제약점이 있었다. .NET Framework에서는 프로그램의 행위를 결정짓는 옵션들을 저장하기 위해 .Config 파일을 사용한다.
데스크탑 응용프로그램 .EXE 에 대해서 Configuration 파일(구성파일)은 .EXE.Config이 되는데, 예를 들어, TEST.EXE의 구성 파일은 TEST.EXE.Config가 된다. Visual Studio에서 콘솔, 윈폼, 혹은 WPF 등의 데스크탑 프로젝트를 생성한 후 App.config 파일을 추가하고(아래 그림처럼 Application Configuration File 추가) 여기에 필요한 옵션들을 설정한 후 빌드하면 .EXE 파일에 대한 .EXE.Config 파일이 자동으로 생성된다.

그리고 이렇게 추가한 App.config 파일의 내용을 소스코드에서 사용하기위해서는 "참조"에서 '참조 추가하기'를 통해 반드시 에셈블리의 "System.Configurarion"을 추가하고
사용 할 소스코드에 using 문으로 추가해 주어야 한다.  " using System.Configuration; "

<예제>
[App.config]

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
  </startup>
 
  <appSettings>
    <add key="DataDirectory" value="c:\data" />
    <add key="ClientSettingsProvider.ServiceUri" value="" />
    <add key="SecurityLevel" value="3" />
    <add key="Locale" value="en"/>
  </appSettings>

  <connectionStrings>
    <add name="TestDBConnectionString"
         connectionString="Data Source=.;Initial Catalog=Test;Intergrated Security=True"
         providerName="System.Data.SqlClient" />   
  </connectionStrings>
 
</configuration>
=============================
[C# Code]

using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Configuration;

namespace WindowsFormsApp10
{
    public partial class Form1 : Form
    {
        private string dataDirectory = string.Empty;
        private int secLevel = 0;
        private string dbConn = string.Empty;
       
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            // AppSettings (App.config) 에서 DataDirectory 값 읽기
            this.dataDirectory = ConfigurationManager.AppSettings["DataDirectory"];

            // get Configuration info by App.config
            string Level = ConfigurationManager.AppSettings["SecurityLevel"];
            int.TryParse(Level, out this.secLevel);

            this.dbConn = ConfigurationManager.ConnectionStrings["TestDBConnectionString"].ConnectionString;
            MessageBox.Show(dbConn.ToString());
        }
    }
}

이 블로그의 인기 게시물

Devexpress GridView 팁들

GridView 를 사용하다 보면 Cell 들을 Merge할 때가 발생합니다. 따라서, Cell Merge하는 방법은 아래와 같이 할 수 있습니다. 1. 세로 Merge GridView.OptionsView.AllowCellMerge = true; 이와 같이 옵션을 설정하면, 기본적으로 Column 단위로 같은 Value 값을 가지는 Cell 단위로 Merge를 합니다. GridColumn.OptionsColumn.AllowMerge = false; 이와 같이 할경우 해당 Column은 Merge를 실행하지 않습니다. GridView.CellMerge Event를 통해 사용자 조건별로 Merge를 할 수 있습니다 void gridView1_CellMerge(object sender, DevExpress.XtraGrid.Views.Grid.CellMergeEventArgs e) {                if (e.Column.FieldName == "Q'TY")     {         int iValue1 = Convert.ToInt32(e.CellValue1);         int iValue2 = Convert.ToInt32(e.CellValue2);         e.Merge = true;         e.Handled = true;     } } 2. 가로 Merge 가로 Merge 같은 경우는 GridView에서 옵션으로 기본 제공하지 않습니다. 따라서 해당 Cell을 강제적으로 다시 그려주는 등 여러 가지 Event를 사용해야 합니다. 따라서 Devexpress 에서 예제로 나오 있는 곳을 링크하는 것으로 대신합니다. Merge cells Horizontally in GridView https://www.devexpress.com/Support/Center/Example/Details/E2472/how-to-merge-cells-horizontally-in-gr

[C#] 연산자 목록(Operators)

[C#] C# 프로그램의 일반적인 구조(A skeleton of a C# program)

// A skeleton of a C# program  using System; namespace YourNamespace {     class YourClass     {     }     struct YourStruct     {     }     interface IYourInterface      {     }     delegate int YourDelegate();     enum YourEnum      {     }     namespace YourNestedNamespace     {         struct YourStruct          {         }     }     class YourMainClass     {         static void Main(string[] args)          {             //Your program starts here...         }     } } By Microsoft.MSDN :: .NET Guide Docs