28-3.Á¤º¸ÀÇ ÀúÀå

28-3-1.·¹Áö½ºÆ®¸®

ÆÄÀÏ¿¡ ÀúÀåµÇ´Â Á¤º¸´Â »ç¿ëÀÚ°¡ Á÷Á¢ ¸¸µé°í ÆíÁýÇÑ »ç¿ëÀÚÀÇ °ÍÀÌ´Ù. ¿öµåÇÁ·Î¼¼¼­ÀÇ ¹®¼­ ÆÄÀÏÀ̳ª ½ºÇÁ·¹µå½ÃÆ®ÀÇ ¿öÅ©½ÃÆ® ÆÄÀÏ, ºñÁÖ¾ó ½ºÆ©µð¿À·Î ¸¸µç ¼Ò½º ÆÄÀÏÀº »ç¿ëÀÚÀÇ Á¤º¸¸¦ ÀúÀåÇÑ´Ù. ÀÌ¿¡ ºñÇØ ÇÁ·Î±×·¥ ÀÚ½ÅÀ» À§ÇÑ Á¤º¸µµ Àִµ¥ µ¿ÀÛÀ» °áÁ¤ÇÏ´Â ¿É¼ÇÀ̳ª ÇöÀç ¼³Ä¡ »óÅÂ, âÀÇ ¸¶Áö¸· À§Ä¡¿Í Å©±âµµ ÀúÀåÇØ ³õ°í ´ÙÀ½ ¹ø ½ÇÇàÇÒ ¶§ º¹±¸ÇØ¾ß ÇÑ´Ù.

ÇÁ·Î±×·¥ ³»ºÎÀÇ ÀÌ·± Á¤º¸´Â ÆÄÀÏ·Î ÀúÀåÇÒ ¼ö ÀÖÁö¸¸ º¸¾ÈÀ̳ª ¼Óµµ µîÀÇ ÀÌÀ¯·Î ÁÖ·Î ·¹Áö½ºÆ®¸®¿¡ ÀúÀåÇÑ´Ù. ·¹Áö½ºÆ®¸®´Â ½Ã½ºÅÛÀÇ ¼³Á¤°ú »ç¿ëÀÚÀÇ ·Î±×ÀÎ Á¤º¸, ÀÀ¿ë ÇÁ·Î±×·¥ÀÇ °íÀ¯ÇÑ Á¤º¸¸¦ ÀúÀåÇϱâ À§ÇØ ¿î¿µÃ¼Á¦°¡ Á¦°øÇÏ´Â Áß¾Ó Á¤º¸ ÀúÀå¼ÒÀÌ´Ù. ºÎÆà Á÷ÈĺÎÅÍ ¿­·Á ÀÖ¾î ¼Óµµ°¡ ºü¸£°í º¸¾È Àû¿ëÀ» ¹ÞÀ¸¸ç ½Ã½ºÅÛ¿¡ ÀÇÇØ ¹é¾÷±îÁö °ü¸®µÈ´Ù. ·¹Áö½ºÆ®¸® ÆíÁý±â(regedit)¸¦ ÅëÇØ ¾î¶² Á¤º¸°¡ ÀúÀåµÇ¾î ÀÖ´ÂÁö º¼ ¼ö ÀÖÀ¸¸ç Á÷Á¢ ÆíÁýµµ °¡´ÉÇÏ´Ù.

·¹Áö½ºÆ®¸® °ü·Ã Ŭ·¡½º´Â Microsoft.Win32 ³×ÀÓ½ºÆäÀ̽º¿¡ Á¤ÀǵǾî ÀÖ´Ù. °¡Àå ±âº»ÀÌ µÇ´Â Ŭ·¡½º´Â RegistryÀε¥ º°´Ù¸¥ ±â´ÉÀº ¾ø°í ·¹Áö½ºÆ®¸®ÀÇ ·çƮŰ(ÇÏÀ̺ê)¸¦ ¸®ÅÏÇÏ´Â Àбâ Àü¿ëÀÇ Á¤Àû Çʵ常 Á¦°øÇÑ´Ù. ·¹Áö½ºÆ®¸®´Â ÀúÀåµÇ´Â Á¤º¸ÀÇ Á¾·ù¿¡ µû¶ó ClassesRoot, LocalMachine, CurrentConfig µîÀÇ ÁÖ¿ä ÇÏÀ̺ê·Î ±¸¼ºµÇ´Âµ¥ ÀÀ¿ë ÇÁ·Î±×·¥ÀÌ Á¤º¸ ÀúÀåÀ» À§ÇØ »ç¿ëÇÏ´Â ÇÏÀ̺ê´Â CurrentUserÀÌ´Ù. °¢ ÇÏÀÌºê ¾Æ·¡¿¡´Â ¿©·¯ ´Ü°èÀÇ ¼­ºêÅ°°¡ °èÃþÀûÀ¸·Î Á¸ÀçÇÏ¸ç ¼­ºêÅ° ¾È¿¡ °ª°ú µ¥ÀÌÅÍ°¡ ÀúÀåµÈ´Ù.

RegistryÀÇ Á¤Àû Çʵå´Â ´ëÀÀµÇ´Â ÇÏÀ̺긦 Ç¥ÇöÇÏ´Â RegistryKey °´Ã¼¸¦ ¸®ÅÏÇÑ´Ù. RegistryKey Ŭ·¡½º°¡ ·¹Áö½ºÆ®¸® ÀÔÃâ·Â¿¡ ´ëÇÑ ´ëºÎºÐÀÇ ±â´ÉÀ» Á¦°øÇÏ´Â ÇÙ½É Å¬·¡½ºÀÌ¸ç ¼­ºêÅ°¿Í °ª, µ¥ÀÌÅ͸¦ °ü¸®ÇÏ´Â ¸â¹ö°¡ ¸â¹ö·Î Æ÷ÇԵǾî ÀÖ´Ù. ¼­ºêÅ°¿¡ ¾×¼¼½ºÇÏ·Á¸é ¸ÕÀú ¿­¾î¾ß Çϴµ¥ ´ÙÀ½ µÎ ¸Þ¼­µå Áß Çϳª¸¦ È£ÃâÇÑ´Ù.

 

RegistryKey OpenSubKey (string name [,bool writable])

RegistryKey CreateSubKey (string subkey [, RegistryKeyPermissionCheck permissionCheck, RegistrySecurity registrySecurity] )

 

¼­ºêÅ°¸¦ ¿©´Â ¸Þ¼­µå¿Í »ý¼ºÇÏ´Â ¸Þ¼­µå°¡ °¢°¢ µû·Î Á¦°øµÈ´Ù. OpenSubKey ¸Þ¼­µå·Î ¼­ºêÅ°¸¦ ¿­Áö ¸øÇϸé nullÀÌ ¸®ÅϵǴµ¥ À̶§´Â CreateSubKey ¸Þ¼­µå·Î ¼­ºêÅ°¸¦ Á÷Á¢ »ý¼ºÇÑ´Ù. ¼­ºêÅ°ÀÇ °æ·Î´Â µð·ºÅ͸®¿Í ¸¶Âù°¡Áö·Î \·Î ±¸ºÐÇÏ¿© °èÃþÀûÀ¸·Î Ç¥ÇöÇÑ´Ù. writable Àμö´Â ¼­ºêÅ°¿¡ °ªÀ» ¾µ ¼ö ÀÖ´ÂÁö ÁöÁ¤Çϴµ¥ »ý·«Çϸé ÀÐÀ» ¼ö¸¸ ÀÖ´Ù. ³ª¸ÓÁö Àμö´Â »ý¼ºµÇ´Â ¼­ºêÅ°ÀÇ ±ÇÇÑÀ̳ª º¸¾È ÁöÁ¤À» ÇÑ´Ù. °ªÀ» ÀÐ°í ¾µ ¶§´Â ´ÙÀ½ µÎ ¸Þ¼­µå¸¦ »ç¿ëÇÑ´Ù.

 

Object GetValue (string name [,Object defaultValue,RegistryValueOptions options])

void SetValue (string name,Object value [,RegistryValueKind valueKind])

 

GetValue ¸Þ¼­µå·Î °ªÀÇ À̸§À» Àü´ÞÇϸé ÀÌ °ªÀÇ µ¥ÀÌÅ͸¦ ÀÐ¾î ¸®ÅÏÇÑ´Ù. ·¹Áö½ºÆ®¸®¿¡´Â ÀÓÀÇ Å¸ÀÔÀÇ µ¥ÀÌÅÍ°¡ ±â·ÏµÉ ¼ö ÀÖÀ¸¹Ç·Î ¸®ÅÏ Å¸ÀÔÀº ObjectÀε¥ Àû´çÈ÷ ij½ºÆÃÇؼ­ »ç¿ëÇÑ´Ù. °ªÀÌ Á¸ÀçÇÏÁö ¾ÊÀ¸¸é µÎ ¹ø° Àμö·Î ÁöÁ¤µÈ defaultValue¸¦ ´ë½Å ¸®ÅÏÇÑ´Ù. SetValue ¸Þ¼­µå´Â name °ª¿¡ value µ¥ÀÌÅ͸¦ ÀúÀåÇÏ¸ç ¼¼ ¹ø° Àμö·Î ÀúÀåÇÒ Å¸ÀÔÀ» ÁöÁ¤ÇÑ´Ù.

 

ŸÀÔ

¼³¸í

DWord

32ºñÆ®ÀÇ Á¤¼ö·Î ÀúÀåÇÑ´Ù.

String

null·Î ³¡³ª´Â ¹®ÀÚ¿­·Î ÀúÀåÇÑ´Ù.

Binary

ÀÌÁø µ¥ÀÌÅÍ·Î ÀúÀåÇÑ´Ù.

ExpandString

ȯ°æ º¯¼ö¸¦ È®ÀåÇÏÁö ¾ÊÀº ¹®ÀÚ¿­·Î ÀúÀåÇÑ´Ù.

MultiString

¿©·¯ °³ÀÇ ¹®ÀÚ¿­·Î ±¸¼ºµÈ º¹ÇÕ ¹®ÀÚ¿­·Î ÀúÀåÇÑ´Ù. ¹®ÀÚ¿­ÀÇ ³¡Àº µÎ °³ÀÇ null¹®ÀÚ·Î Á¾·áµÈ´Ù.

QWord

64ºñÆ®ÀÇ Á¤¼ö·Î ÀúÀåÇÑ´Ù.

Unknown

Áö¿øµÇÁö ¾Ê´Â ŸÀÔÀÌ´Ù.

 

Á¤¼ö¿Í ¹®ÀÚ¿­ µÎ °¡Áö ŸÀÔ¸¸ »ç¿ëÇصµ À¢¸¸ÇÑ Á¤º¸´Â ÃæºÐÈ÷ ÀúÀåÇÒ ¼ö ÀÖÀ¸¸ç °¡²û Å« µ¥ÀÌÅÍ¿¡ ´ëÇؼ­¸¸ ÀÌÁø ŸÀÔÀ» »ç¿ëÇÑ´Ù. ŸÀÔÀ» ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é ¹®ÀÚ¿­ ÇüÅ·ΠÀúÀåµÈ´Ù. ´ÙÀ½ ¿¹Á¦´Â ¹®ÀÚ¿­°ú Á¤¼ö¸¦ ·¹Áö½ºÆ®¸®¿¡ ÀúÀåÇÏ°í ´ÙÀ½ ½ÇÇà½Ã¿¡ ·¹Áö½ºÆ®¸®·ÎºÎÅÍ º¹±¸ÇÑ´Ù.

 

RegistryTest

using System; ~ using System.Windows.Forms;

using Microsoft.Win32;

 

namespace RegistryTest {

             public partial class Form1 : Form {

                           const string RegRoot = @"Software\SoenSoft\RegistryTest";

                           public Form1() {

                                        InitializeComponent();

                           }

 

                           private void Form1_Load(object sender, EventArgs e) {

                                        string Setting = RegRoot + @"\Setting";

                                        RegistryKey R = Registry.CurrentUser.OpenSubKey(Setting);

                                        if (R == null) {

                                                     textBox1.Text = "ù ¹®ÀÚ¿­";

                                                     numericUpDown1.Value = 12;

                                        } else {

                                                     textBox1.Text = (string)R.GetValue("Text");

                                                     numericUpDown1.Value = (int)R.GetValue("Value");

                                                     R.Close();

                                        }

                           }

 

                           private void Form1_FormClosed(object sender, FormClosedEventArgs e) {

                                        string Setting = RegRoot + @"\Setting";

                                        RegistryKey R = Registry.CurrentUser.OpenSubKey(Setting, true);

                                        if (R == null) {

                                                     R = Registry.CurrentUser.CreateSubKey(Setting);

                                        }

 

                                        R.SetValue("Text", textBox1.Text);

                                        R.SetValue("Value", numericUpDown1.Value, RegistryValueKind.DWord);

 

                                        R.Close();

                           }

             }

}

 

Æû¿¡ ÅؽºÆ® ¹Ú½º¿Í ¾÷´Ù¿îÀ» ¹èÄ¡ÇÏ°í ¹®ÀÚ¿­°ú Á¤¼ö¸¦ ÀԷ¹޴´Ù. Load À̺¥Æ®¿¡¼­ ÀúÀåµÈ Á¤º¸¸¦ Àбâ À§ÇØ ·¹Áö½ºÆ®¸®¸¦ °Ë»öÇϴµ¥ °üÇà¿¡ µû¶ó ¼­ºêÅ°´Â CurrentUser ¾Æ·¡ÀÇ "Software\ȸ»ç¸í\ÇÁ·Î±×·¥¸í"À¸·Î Áö¾ú´Ù. ÀÌ ¼­ºêÅ° ¾Æ·¡¿¡ Á¤º¸ÀÇ Á¾·ù¿¡ µû¶ó ¶Ç ´Ù¸¥ ¼­ºêÅ°¸¦ ´õ ¸¸µå´Âµ¥ ÇÁ·Î±×·¥ÀÇ ¼³Á¤ »óÅ´ Setting ¼­ºêÅ°¿¡ ÀúÀåÇß´Ù. ÃÖÃÊ ½ÇÇà½Ã¿¡´Â ¼­ºêÅ°°¡ »ý¼ºµÇ¾î ÀÖÁö ¾ÊÀ¸¹Ç·Î µðÆúÆ®¸¦ Àû¿ëÇÑ´Ù.

½ÇÇàÁß¿¡ »ç¿ëÀÚ´Â ÅؽºÆ® ¹Ú½º¿Í ¾÷´Ù¿îÀÇ Á¤º¸¸¦ ¸¶À½´ë·Î ÆíÁýÇÑ´Ù. ÀÌ·¸°Ô ÆíÁýµÈ Á¤º¸´Â ÆûÀÌ ´ÝÈ÷´Â FormClosed À̺¥Æ®¿¡¼­ ·¹Áö½ºÆ®¸®¿¡ ÀúÀåÇÑ´Ù. OpenSubKey ¸Þ¼­µå·Î ¼­ºêÅ°¸¦ ¿­¾î º¸°í ¾øÀ¸¸é CreateSubKey·Î Á÷Á¢ »ý¼ºÇÑ´Ù. ±×¸®°í SetValue ¸Þ¼­µå·Î ¹®ÀÚ¿­°ú Á¤¼ö°ªÀ» ÀúÀåÇß´Ù. ÃÖÃÊ ½ÇÇàÇÒ ¶§´Â ¼­ºêÅ°¸¦ ¸¸µé¾î¾ß ÇÏ¸ç µÎ ¹ø° ½ÇÇàÇÒ ¶§ºÎÅÍ´Â OpenSubKey°¡ Ç×»ó ¼º°øÇÑ´Ù. ·¹Áö½ºÆ®¸® ÆíÁý±â¸¦ º¸¸é Á¤º¸°¡ ÀúÀåµÇ¾î ÀÖ´Â °ÍÀ» È®ÀÎÇÒ ¼ö ÀÖ´Ù.

ÀúÀåµÈ Á¤º¸´Â ´ÙÀ½ ½ÇÇà½Ã¿¡ Load À̺¥Æ®¿¡¼­ GetValue ¸Þ¼­µå¿¡ ÀÇÇØ º¹±¸µÈ´Ù. ·¹Áö½ºÆ®¸®¿¡ ÀúÀåµÈ Á¤º¸´Â ÃÖÃÊ ¼³Ä¡µÉ ¶§ µü ÇÑ ¹ø¸¸ µðÆúÆ®°ªÀ¸·Î ÃʱâÈ­ÇÏ°í Á¾·á Àü¿¡ ÀúÀåÇÏ°í ½ÃÀÛÇÒ ¶§ ´Ù½Ã º¹±¸ÇϹǷΠ»ý¸íÀÌ ¾ÆÁÖ ±æ´Ù. ÇÁ·Î±×·¥ÀÌ ¼³Ä¡ ÇØÁ¦µÇ°Å³ª Çϵåµð½ºÅ©¸¦ Æ÷¸ËÇÒ ¶§±îÁö °è¼Ó À¯ÁöµÈ´Ù.

28-3-2.±¸¼º ÆÄÀÏ

±¸¼º ÆÄÀÏÀº ÇÁ·Î±×·¥ÀÇ °í±Þ ¿É¼ÇÀ» ÀúÀåÇÏ´Â ÆÄÀÏÀÌ´Ù. Á¤º¸¸¦ ÀúÀåÇÑ´Ù´Â ¸é¿¡¼­ ·¹Áö½ºÆ®¸®¿Í ±â´ÉÀÌ ºñ½ÁÇÏÁö¸¸ ÀÀ¿ë ÇÁ·Î±×·¥°ú °°ÀÌ ¹èÆ÷µÇ¾î Ãʱ⠼³Á¤°ªÀ» ÁöÁ¤ÇÑ´Ù´Â Á¡ÀÌ ´Ù¸£´Ù. À¢¸¸Çؼ­´Â ¹Ù²îÁö ¾ÊÁö¸¸ ÇÊ¿äÇÏ´Ù¸é »ç¿ëÀÚ°¡ Á÷Á¢ ÆíÁýÇÒ ¼öµµ ÀÖ´Ù. ±¸¼º ÆÄÀÏÀÇ Á¤º¸´Â ÄÁÆ®·ÑÀÇ ÇÁ·ÎÆÛƼ¿Í ¿¬°á °¡´ÉÇÏ´Ù. Á¶±Ý º¹ÀâÇϹǷΠ´Ü°è¸¦ µû¶ó ¿¹Á¦¸¦ ¸¸µé¾î º¸ÀÚ.

 

DynamicProperty

 

ÇÁ·ÎÁ§Æ®¸¦ »ý¼ºÇϸé App.config ÆÄÀÏÀÌ ÀÚµ¿À¸·Î »ý¼ºµÈ´Ù. ÀÌÀü ¹öÀü¿¡¼­´Â »õ Ç׸ñ Ãß°¡ ´ëÈ­»óÀÚ¿¡¼­ ¾ÖÇø®ÄÉÀÌ¼Ç ±¸¼º ÆÄÀÏÀ» ÇÊ¿äÇÒ ¶§ Ãß°¡ÇÏ´Â ½ÄÀ̾ú´Âµ¥ ÇöÀç´Â óÀ½ºÎÅÍ ¸¸µé¾îÁø´Ù. ÀÌ ÆÄÀÏÀ» ¿­¾î º¸ÀÚ.

 

<?xml version="1.0" encoding="utf-8" ?>

<configuration>

    <startup>

        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />

    </startup>

</configuration>

 

XMLÀÇ ±âº» »À´ë¸¸ °®Ãß¾úÀ» »Ó ¾ÆÁ÷ ¾Æ¹« Á¤º¸µµ ¾ø´Ù. ÀÌÈÄ configuration ¿¤¸®¸ÕÆ®¿¡ Á¤º¸¸¦ Ãß°¡ÇÒ ¼ö ÀÖ´Ù. Æû ¼Ó¼ºÃ¢ÀÇ ApplicationSetting/PropertyBinding Ç׸ñ ¿·ÀÇ ... ¹öÆ°À» ´©¸£¸é ´ÙÀ½ ´ëÈ­»óÀÚ°¡ ³ªÅ¸³­´Ù.

ÆûÀÇ ÇÁ·ÎÆÛƼ°¡ ³ª¿­µÇ¾î Àִµ¥ ÀÌ ´ëÈ­»óÀÚ¿¡¼­ ÇÁ·ÎÅÍƼ¿Í ±¸¼º ÆÄÀÏÀÇ Ç׸ñÀ» ¿¬°áÇÑ´Ù. Text ÇÁ·ÎÆÛƼÀÇ µå·Ó´Ù¿îÀ» ¿­¾î »õ·Î ¸¸µé±â¸¦ ¼±ÅÃÇÏ¸é ´ÙÀ½ ´ëÈ­»óÀÚ°¡ ³ªÅ¸³­´Ù.

Name Çʵ忡 FormText¶ó´Â À̸§À» ºÙÀδÙ. ¿©±â±îÁö ÀÛ¾÷ÇÑ ÈÄ ½ÇÇàÇØ º¸¸é Æò¼Ò¿Í ÀüÇô ´Ù¸¦ ¹Ù ¾ø´Ù. ±×·¯³ª App.config ÆÄÀÏÀÌ ´ÙÀ½°ú °°ÀÌ ¹Ù²î¾î ÀÖ°í Debug Æú´õ¸¦ º¸¸é DymamicProperty.exe.config¶ó´Â µ¿ÀÏÇÑ ³»¿ëÀÇ XML ÆÄÀÏÀÌ »ý¼ºµÇ¾î ÀÖ´Ù.

 

<?xml version="1.0" encoding="utf-8" ?>

<configuration>

         <configSections>

                      ==== Áß°£ »ý·« ====

         </configSections>

         <userSettings>

                      <DynnamicProperty.Properties.Settings>

                                   <setting name="FormText" serializeAs="String">

                                                 <value>Form1</value>

                                   </setting>

                      </DynnamicProperty.Properties.Settings>

         </userSettings>

</configuration>

 

userSettings ¿¤¸®¸ÕÆ®¾È¿¡ setting ¿¤¸®¸ÕÆ®°¡ Æ÷ÇԵǾî Àִµ¥ À̸§Àº FormTextÀÌ°í °ªÀº Form1À̶ó°í ±â·ÏµÇ¾î ÀÖ´Ù. ±×¸®°í Æû µðÀÚÀ̳ʰ¡ ¸¸µç Äڵ带 º¸¸é ´ÙÀ½°ú °°Àº ±ä Äڵ尡 Àִµ¥ ÀÌ Äڵ忡 ÀÇÇØ ÆûÀÇ Text ÇÁ·ÎÆÛƼ°¡ ±¸¼º ÆÄÀÏÀÇ FormText ¿¤¸®¸ÕÆ®¿Í ¿¬°áµÈ´Ù.

 

this.DataBindings.Add(new System.Windows.Forms.Binding("Text", global::DynnamicProperty. Properties. Settings. Default, "FormText", true, System.Windows.Forms. DataSourceUpdateMode. OnPropertyChanged));

 

¶Ç ¼Ó¼ºÃ¢ÀÇ Text ÇÁ·ÎÆÛƼ¸¦ º¸¸é ¾ÆÀÌÄÜÀÌ Ç¥½ÃµÇ¾î ÀÖÀ¸¸ç ÀÌ ¾ÆÀÌÄÜ¿¡ Ä¿¼­¸¦ ´ë º¸¸é "FormText" ÀÀ¿ë ÇÁ·Î±×·¥ ¼³Á¤¿¡ ¹ÙÀεùµÇ¾î ÀÖ´Ù´Â ÅøÆÁÀÌ ³ªÅ¸³­´Ù. Text ÇÁ·ÎÆÛƼ¸¦ ¼öÁ¤Çϸé App.configÀÇ FormText ¿¤¸®¸ÕÆ®°¡ °°ÀÌ ¼öÁ¤µÇ¸ç ¹Ý´ë·Î App.configÀÇ FormText¸¦ ¼öÁ¤Çϸé ÆûÀÇ Text ÇÁ·ÎÆÛƼµµ ¼öÁ¤µÈ´Ù. ÀÌ µÑÀÌ ¹ÙÀεùµÇ¾î ¹­ÀÎ °ÍÀÌ´Ù.

App.config ÆÄÀÏÀº ÄÄÆÄÀÏÇÒ ¶§¸¶´Ù Debug Æú´õÀÇ ½ÇÇàÆÄÀϸí.config ÆÄÀÏ·Î º¹»çµÈ´Ù. ±×·¸´Ù¸é ÀÌ·¸°Ô ¹ÙÀεùµÈ °ÍÀÌ ¹«½¼ Àǹ̰¡ ÀÖ´ÂÁö, ¾î¶² ½Ç¿ëÀûÀÎ °¡Ä¡°¡ ÀÖ´ÂÁö Å×½ºÆ®ÇØ º¸ÀÚ. Ž»ö±â¿¡¼­ Debug Æú´õ¸¦ ¿­°í ½ÇÇà ÆÄÀÏÀ» ½ÇÇàÇÏ¸é º° ƯÀÌÇÑ »çÇ×¾øÀÌ ½ÇÇàµÈ´Ù. À̹ø¿¡´Â °°Àº Æú´õ¿¡ ÀÖ´Â DynamicProperty.exe.config ÆÄÀÏÀ» ¸Þ¸ðÀåÀ¸·Î ¿­¾î¼­ ´ÙÀ½°ú °°ÀÌ ¼öÁ¤ÇØ º¸ÀÚ.

 

<userSettings>

         <DynamicProperty.Properties.Settings>

                      <setting name="FormText" serializeAs="String">

                            <value>ÆûÀÇ À̸§ÀÌ´Ù.</value>

                      </setting>

         </DynamicProperty.Properties.Settings>

</userSettings>

 

FormText Ç׸ñÀÇ value ¿¤¸®¸ÕÆ®¸¦ ¼öÁ¤Çß´Ù. ±×¸®°í ÀÌ »óÅ¿¡¼­ ´Ù½Ã ½ÇÇàÇØ º¸¸é config ÆÄÀÏ¿¡ ÀÔ·ÂÇÑ ¹®ÀÚ¿­ÀÌ ÆûÀÇ Text ÇÁ·ÎÆÛƼ¿¡ ±×´ë·Î Àû¿ëµÈ´Ù. ¿Ö³ÄÇϸé ÆûÀÇ Text ÇÁ·ÎÆÛƼ°¡ ±¸¼º ÆÄÀÏÀÇ FormText¿¡ ¿¬°áµÇ¾î ÀÖ°í µðÀÚÀ̳ʰ¡ ¸¸µç Äڵ忡¼­ ½ÇÇà Á÷ÈÄ¿¡ ±¸¼º ÆÄÀÏ¿¡¼­ Á¤º¸¸¦ Àоî Text ÇÁ·ÎÆÛƼ¿¡ ´ëÀÔÇϱ⠶§¹®ÀÌ´Ù.

ÀÌ·¸°Ô ±¸¼º ÆÄÀÏÀÇ Ç׸ñ°ú ¿¬°áµÈ ÇÁ·ÎÆÛƼ¸¦ µ¿Àû ÇÁ·ÎÆÛƼ¶ó°í ÇÑ´Ù. µ¿Àû ÇÁ·ÎÆÛƼÀÇ ÀåÁ¡Àº ½ÇÇà ÆÄÀÏÀ» ÄÄÆÄÀÏÇÏÁö ¾Ê°íµµ µ¿ÀÛ¿¡ ¿µÇâÀ» ÁÙ ¼ö ÀÖ´Ù´Â Á¡ÀÌ´Ù. ±¸¼º ÆÄÀÏÀÇ Á¤º¸´Â ÀϹÝÀûÀÎ ¸ñÀûÀ¸·Îµµ ¾µ ¼ö ÀÖÀ¸¸ç ÄÚµå·Î ±¸¼º ÆÄÀÏÀÇ Á¤º¸¸¦ Á÷Á¢ ÀÐ¾î »ç¿ëÇÏ´Â °Íµµ °¡´ÉÇÏ´Ù. ±×·¯³ª ÄÚµå·Î º¯°æÇÏ´Â °ÍÀº º¸¾È»óÀÇ ¹®Á¦°¡ ÀÖ¾î ±ÝÁöµÇ¾î ÀÖÀ¸¸ç Àбâ Àü¿ëÀÇ Á¤º¸¶ó°í ÇÒ ¼ö ÀÖ´Ù.

±¸¼º ÆÄÀÏÀ» ÆíÁýÇÏ·Á¸é XML ÆÄÀÏÀ» ¼öÁ¤ÇØ¾ß ÇÏ´Â ¹ø°Å·Î¿òÀÌ ÀÖÁö¸¸ ±×·¡¼­ ´õ ½Ç¿ë¼ºÀÌ ÀÖ´Ù. »ç¿ëÀÚ°¡ ÇԺηΠº¯°æÇؼ­´Â ¾ÈµÇ´Â Áß¿äÇÑ °í±Þ ¿É¼ÇÀÌ ÁÖ·Î ±¸¼º ÆÄÀÏ·Î ¹èÆ÷µÈ´Ù. ¹èÆ÷µÈ µðÆúÆ®´ë·Î ¾²Áö¸¸ °í±Þ »ç¿ëÀÚ´Â XML ÆÄÀÏÀ» ÆíÁýÇؼ­¶óµµ ÇÁ·Î±×·¥ÀÇ µ¿ÀÛÀ» Ä¿½ºÅ͸¶ÀÌ¡ÇÒ ¼ö ÀÖ´Ù. ¿øÇÑ´Ù¸é ÆíÁýÇϵµ·Ï ¹æ¹ýÀ» Á¦°øÇ쵂 ³Ê¹« ½±°Ô ¼öÁ¤Çϵµ·Ï ³»¹ö·Á µÎ°í ½ÍÁö ¾ÊÀ» ¶§ ±¸¼º ÆÄÀÏÀÌ Á¦°ÝÀÌ´Ù.

¾î¶² ÇÁ·Î±×·¥À̳ª »ç¿ëÀÚ°¡ ÇԺηΠ°Çµå·Á¼­´Â ¾ÈµÇ´Â Áß¿äÇÑ Á¤º¸°¡ ÀÖ´Ù. Àß ¹Ù²îÁö ¾ÊÁö¸¸ ¾ÆÁÖ µå¹°°Ô ¹Ù²Ü ÇÊ¿ä°¡ Àְųª ¹è°æ Áö½ÄÀÌ ÀÖ¾î¾ß¸¸ Á¶Á¤ÇÒ ¼ö ÀÖ´Â À§ÇèÇÑ ¿É¼ÇÀÌ ±¸¼º ÆÄÀÏ¿¡ ÀúÀåµÈ´Ù. ¿î¿µÃ¼Á¦µµ ·¹Áö½ºÆ®¸®¸¦ µÚÁ® º¸¸é ÀÌ·± °í±Þ ¿É¼ÇÀÌ ²À²À ¼û°ÜÁ® ÀÖ°í ÀϺδ °ø°³µÇ¾î ÀÖ´Ù. ÇÏÁö¸¸ ·¹Áö½ºÆ®¸®¸¦ À߸ø °Çµå·ÈÀ» ¶§ÀÇ Ã¥ÀÓÀº »ç¿ëÀÚ¿¡°Ô ÀÖ´Ù. °í±Þ ¿É¼ÇÀÌ Á¦¾îÆÇ¿¡ °ø°³µÇ¾î ÀÖÁö ¾ÊÀº °ÍÀº ´Ù ±×¸¸ÇÑ ÀÌÀ¯°¡ ÀÖ´Ù.