lecture Home > Advice to Beginner

VS.NET 2003 Add-in

   °­Á ÃÖÃÊ ÀÛ¼ºÀÏ : 2006³â 08¿ù 11ÀÏ
   °­Á ÃÖÁ¾ ¼öÁ¤ÀÏ : 2006³â 08¿ù 22ÀÏ

   °­Á ÀÐÀ½ ¼ö : ȸ

   ÀÛ¼ºÀÚ : °­ ½ÂÈ£
   ÆíÁýÀÚ : Taeyo(±è Å¿µ)

   °­Á Á¦¸ñ : Visual Studio .Net 2003 Add-In °­Á 1

°­Á Àü Å¿ÀÀÇ Àâ´ã>

À̹ø °­Á´ °­½ÂÈ£´ÔÀÌ º¸³»ÁֽŠVS.NET 2003 Add-in¿¡ °üÇÑ ³»¿ëÀÔ´Ï´Ù.
¾Ë¾ÆµÎ¸é ¿©·¯¸ð·Î À¯¿ëÇÑ ³»¿ëÀ» °­Á·Πº¸³»ÁֽнÂÈ£´Ô²² °¨»çÀÇ ¸»¾¸µå¸³´Ï´Ù


Ãß°¡±â´É(Add-in) ¸¸µå´Â ¹ý

VS .NET 2003Àº °³¹ß¿¡ ÇÊ¿äÇÑ ¸¹Àº ±â´ÉµéÀ» Á¦°øÇØ ÁÖ´Â IDE(ÅëÇÕ °³¹ß ȯ°æ) ÀÔ´Ï´Ù. ±× Æí¸®ÇÔÀº ÀÌ·ç ¸»ÇÒ ¼ö ¾øÁö¸¸ °³¹ßÀÚµéÀÇ ¸ðµç ¿ä±¸¸¦ ÃæÁ·½ÃÄÑ ÁÙ ¼ö´Â ¾ø½À´Ï´Ù. ±×·¡¼­ VS .NET 2003¿¡¼­´Â °³¹ßÀÚ°¡ ÇÊ¿äÇÑ ±â´ÉÀ» Á÷Á¢ ¸¸µé¾î¼­ È®ÀåÇÒ ¼ö ÀÖ´Â ÇÁ·Î±×·¡¹Ö ¸ðµ¨À» Á¦°øÇÕ´Ï´Ù. À̰ÍÀÌ ¹Ù·Î Ãß°¡±â´ÉÀÔ´Ï´Ù.

¾Æ·¡´Â MSDN¿¡ ³ª¿ÍÀÖ´Â Ãß°¡±â´É(Add-in)¿¡ ´ëÇÑ ¼³¸íÀÔ´Ï´Ù.

Visual Studio¿¡¼­ °³¹ßÀÚ¿¡°Ô °ÅÀÇ ¸ðµç ÀÛ¾÷À» ¼öÇàÇÒ ¼ö ÀÖ´Â ¸¹Àº µµ±¸¿Í ±â´ÉÀ» Á¦°øÇϰí´Â ÀÖÁö¸¸ °³¹ßÀÚ¿¡ µû¶ó¼­´Â º¸´Ù ¼¼ºÎÀûÀ̰í Ãß°¡ÀûÀÎ Á¦¾î¸¦ À§ÇÑ ±â´ÉÀÌ ÇÊ¿äÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, ¹Ýº¹ÀûÀ¸·Î ¼öÇàÇϴ ƯÁ¤ ÀÛ¾÷ ¶Ç´Â ÀÏ·ÃÀÇ ÀÛ¾÷À» ÀÚµ¿È­ÇÏ·Á´Â °æ¿ì°¡ ÀÖ½À´Ï´Ù. À̸¦ À§ÇØ Visual Studio¿¡¼­´Â IDE(ÅëÇÕ °³¹ß ȯ°æ)¸¦ È®ÀåÇϰí ÀÚµ¿È­ÇÒ ¼ö ÀÖµµ·Ï ÀÚµ¿È­ ¸ðµ¨À̶ó´Â dzºÎÇÑ ±â´ÉÀÇ ÇÁ·Î±×·¡¹Ö ¸ðµ¨À» Á¦°øÇÕ´Ï´Ù. ÀÚµ¿È­ ¸ðµ¨Àº ȯ°æÀ» ÀÚµ¿È­ÇÒ ¼ö ÀÖµµ·Ï ÇÒ »Ó ¾Æ´Ï¶ó È®À强°ú »õ·Î¿î ±â´ÉÀ» ȯ°æ¿¡ Á¦°øÇÕ´Ï´Ù.

¾Æ·¡ MSDN ¿¡¼­ VS .NETÀÇ Ãß°¡±â´É¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ ³»¿ëÀ» º¼ ¼ö ÀÖ½À´Ï´Ù. µû¶ó¼­ Ãß°¡±â´É¿¡ ´ëÇÑ ¼³¸íÀº MSDNÀ¸·Î ´ë½ÅÇϰíÀÚ ÇÕ´Ï´Ù. ÀÌ °­Á´ Ȱ¿ë °­ÁÂÀ̰í.. ¿¡¡¦ ¶Ç.. »ç½Ç ÀÚ¼¼ÇÑ °ÍÀº Àúµµ Àß ¸ð¸£±â ¶§¹®¿¡ ¸»ÀÌÁÒ..^^;

MSDN(Ãß°¡±â´É °ü·Ã url)

Visual Studio ȯ°æ È®Àå
http://msdn.microsoft.com/library/KOR/vsintro7/html/vxoriExtendingVisualStudioEnvironment.asp?frame=true

ÀÚµ¿È­ ¹× È®À强 ÂüÁ¶
http://msdn.microsoft.com/library/KOR/vsintro7/html/vxoriExtensibilityReference.asp?frame=true

Áö±ÝºÎÅÍ Ãß°¡±â´ÉÀ» ¾î¶»°Ô ¸¸µå´ÂÁö ¾Ë¾Æº¸°Ú½À´Ï´Ù. Ãß°¡±â´ÉÀ» ¼öµ¿À¸·Î ¸¸µé¾î¼­ Ãß°¡ÇÒ ¼öµµ ÀÖÁö¸¸ VS .NET 2003¿¡¼­ Á¦°øÇÏ´Â Ãß°¡ ±â´É ¸¶¹ý»ç¸¦ ÀÌ¿ëÇÏ¸é ½±°Ô ¸¸µé ¼ö ÀÖ½À´Ï´Ù.


1. ÆÄÀÏ > »õ·Î¸¸µé±â > ÇÁ·ÎÁ§Æ® > ±âŸ ÇÁ·ÎÁ§Æ® > È®À强 ÇÁ·ÎÁ§Æ® > Visual Studio .NET Ãß°¡ ±â´É ¼±ÅÃ

À̸§, À§Ä¡¸¦ ¼±ÅÃÇϰí È®ÀÎ ¹öưÀ» Ŭ¸¯ÇÕ´Ï´Ù.
¸¶¹ý»ç°¡ ³ªÅ¸³ª´Â °ÍÀ» º¼ ¼ö ÀÖ½À´Ï´Ù.
Áß¿äÇÑ ºÎºÐ¸¸ ¼³¸íÇÒ Å×´Ï ³ª¸ÓÁö ºÎºÐÀº Àڽſ¡°Ô ¸Â°Ô ¼±ÅÃÇÏ°í ´ÙÀ½À» ´©¸£¸é µË´Ï´Ù.

2. Ãß°¡ ±â´É ¿É¼Ç ¼±ÅÃ

1. Ãß°¡ ±â´ÉÀ» µµ±¸ ¸Þ´º¿¡ Ç¥½ÃÇÒÁö ¿©ºÎ
2-1. Ãß°¡ ±â´É¿¡ ¸ð´Þ UI(»ç¿ëÀÚ ÀÎÅÍÆäÀ̽º)¸¦ »ç¿ëÇÏÁö ¾Êµµ·Ï ÇÏ¿© ¸í·ÉÁÙ ºôµå¿¡¼­ ¾ÈÀüÇÏ°Ô »ç¿ëÇÒ ¼ö ÀÖµµ·Ï ÇÒÁö ¿©ºÎ
2-2. Ãß°¡ ±â´ÉÀ» ½ÃÀÛÇÏ´Â ½Ã±â(VS .NET ÀÌ ½ÇÇàµÉ ¶§ Ãß°¡±â´ÉÀ» ·Îµå ÇÒÁö ¿©ºÎ)

¿ì¸®´Â 1¹ø "¿¹, 'µµ±¸' ¸Þ´º Ç׸ñÀ» ¸¸µì´Ï´Ù. È£½ºÆ® ÀÀ¿ë ÇÁ·Î±×·¥ÀÌ ½ÃÀÛµÉ ¶§¡¦" ¸¦ ¼±ÅÃÇØ º¸µµ·Ï ÇϰڽÀ´Ï´Ù.

3. ¸¶Ä§ ¹öưÀ» ´­·¯ ¸¶¹ý»ç¸¦ ¸¶Ä¡¸é ¾Æ·¡¿Í °°ÀÌ ÇÁ·ÎÁ§Æ®°¡ »ý¼ºµË´Ï´Ù.

Ãß°¡±â´É ÇÁ·ÎÁ§Æ®¿Í ¼³Ä¡ ÇÁ·ÎÁ§Æ®°¡ »ý¼ºµÅÀÖ´Â °ÍÀ» º¼ ¼ö ÀÖ½À´Ï´Ù. ÀÌÁ¦ Ãß°¡±â´ÉÀÇ ÀüüÀûÀΠƲÀº ¿Ï¼ºµÆ½À´Ï´Ù. ¿ì¸®´Â ¿øÇÏ´Â ±â´É¸¸ ±¸ÇöÇÏ¸é µË´Ï´Ù.

±× Àü¿¡ ¸¶¹ý»ç°¡ ¸¸µé¾î ³õÀº ÇÁ·ÎÁ§Æ®¿Í ¼Ò½º¸¦ Á» »ìÆì º¸µµ·Ï ÇϰڽÀ´Ï´Ù. ÂüÁ¶¿¡ º¸¸é ³¸¼± ³ðµéÀÌ ¼¼ °³°¡ Ãß°¡µÅÀÖ´Â °ÍÀÌ º¸ÀÔ´Ï´Ù. ÀÌ ³ðµéÀ» »ìÆìº¸ÀÚ¸é ¸»ÀÌÁÒ.

  • EnvDTE
  • Visual Studio .NET ÀÚµ¿È­ ¸ðµ¨ÀÇ ¸ðµç °³Ã¼¿Í ¸â¹ö´Â DTE °³Ã¼¸¦ ±â¹ÝÀ¸·Î ÇÕ´Ï´Ù. Visual Studio .NET IDE¸¦ ´ëÇ¥ÇÏ´Â DTE °³Ã¼´Â ÀÚµ¿È­ ¸ðµ¨ °èÃþ ±¸Á¶ÀÇ ÃÖ»óÀ§ °³Ã¼À̸ç EnvDTE¶ó´Â ³×ÀÓ½ºÆäÀ̽º¿¡ À§Ä¡ÇÕ´Ï´Ù. ÀÌ ³×ÀÓ½ºÆäÀ̽º´Â "envdte"¶ó´Â .NET ¾î¼Àºí¸® À̸§À¸·Î envdte.dll ÆÄÀÏ¿¡ Æ÷ÇԵǸç, COM Çü½Ä ¶óÀ̺귯¸®´Â "Microsoft Development Environment 7.0"À̶ó´Â À̸§À¸·Î dte.olb ÆÄÀÏ¿¡ Æ÷ÇԵ˴ϴÙ. (MSDN ¹ßÃé)

    ±×·¸½À´Ï´Ù. Ãß°¡±â´ÉÀ» ¸¸µé±â À§Çؼ­´Â DTE °³Ã¼°¡ ÇÊ¿äÇϱ⠶§¹®¿¡ EnvDTE ¿¡¼Àºí¸®°¡ ÂüÁ¶µÈ °ÍÀÔ´Ï´Ù. ¸¶¹ý»ç¿¡ ÀÇÇØ¼­ »ý¼ºµÈ Connect.cs ÆÄÀÏÀ» »ìÆìº¸¸é ¸â¹ö º¯¼ö·Î DTE °³Ã¼¸¦ ¼±¾ðÇØ ³õÀº °ÍÀ» º¼ ¼ö ÀÖ½À´Ï´Ù.

    private _DTE applicationObject;

    Âü°í·Î DTE °³Ã¼´Â Ãß°¡ ±â´ÉÀ» ¸¸µé ¶§ ±¸ÇöÇÏ´Â OnConnection ¸Þ¼­µå¿¡¼­ Á¦°øÇÕ´Ï´Ù.

  • Extensibility
  • ÀÌ ³×ÀÓ½ºÆäÀ̽º´Â IDTExtensibility2 ÀÎÅÍÆäÀ̽º¸¦ Æ÷ÇÔÇϴµ¥ IDTExtensibility2 ÀÎÅÍÆäÀ̽º´Â Ãß°¡ ±â´ÉÀÌ ·Îµå, ¾ð·Îµå, ¾÷µ¥ÀÌÆ®µÇ´Â °æ¿ì µî¿¡ ¹ß»ýÇÏ´Â À̺¥Æ® ¾Ë¸²À» È£½ºÆÃÇÕ´Ï´Ù. (MSDN ¹ßÃé)

    ¸â¹ö·Î´Â OnConnection, OnDisconnection µîÀÌ ÀÖ½À´Ï´Ù. ¸Þ¼­µå¿¡ ´ëÇÑ ¼³¸íÀº ¾Æ·¡¿¡¼­ ´Ù½Ã ´Ù·ç°Ú½À´Ï´Ù.

  • Office
  • Microsoft.Office.Core ³×ÀÓ½ºÆäÀ̽ºÀÇ _CommandBars, CommandBar, CommandBarControl ÀÎÅÍÆäÀ̽ºÀÇ ¸â¹ö¸¦ »ç¿ëÇÏ¿© VS .NET ¸Þ´º¿¡ Ãß°¡±â´É ¸Þ´º¸¦ Ãß°¡Çϱâ À§Çؼ­ ÂüÁ¶µÇ¾ú½À´Ï´Ù.

    ÀÚ~ ÀÌÁ¦ Connect.cs ÀÇ ³»¿ëµµ »ìÆì º¸µµ·Ï ÇÒ±î¿ä.

    ¸ÕÀú Ŭ·¡½º Á¤ÀÇ ºÎºÐÀ» »ìÆìº¸¸é IDTExtensibility2, IDTCommandTarget ¶ó´Â ÀÎÅÍÆäÀ̽º¸¦ »ó¼ÓÇϰí ÀÖ½À´Ï´Ù.

    public class Connect : Object, Extensibility.IDTExtensibility2, IDTCommandTarget

  • IDTExtensibility2 : À§¿¡¼­ ¼³¸íÇÑ´ë·Î Ãß°¡±â´ÉÀÌ ·Îµå, ¾ð·Îµå, ¾÷µ¥ÀÌÆ®µÇ´Â °æ¿ì µî¿¡ ¹ß»ýÇÏ´Â
                                   À̺¥Æ®¸¦ ó¸®Çϱâ À§ÇÔÀÔ´Ï´Ù.
  • IDTCommandTarget : AddNamedCommand ¸Þ¼­µå·Î Ãß°¡µÈ ¸í·ÉÀ» ó¸®ÇÏ·Á¸é ÀÌ ÀÎÅÍÆäÀ̽º¸¦                                ±¸ÇöÇØ¾ß ÇÕ´Ï´Ù.
  • ¸â¹ö´Â ´ÙÀ½°ú °°½À´Ï´Ù.

    Exec : AddNamedCommand ¸Þ¼­µå¸¦ »ç¿ëÇÏ¿© Ãß°¡ÇÑ ¸í·ÉÀ» ½ÇÇàÇÕ´Ï´Ù.
    QueryStatus : AddNamedCommand ¸Þ¼­µå¸¦ »ç¿ëÇÏ¿© Ãß°¡ÇÑ ¸í·ÉÀÇ ÇöÀç »óÅÂ
                          (»ç¿ë, »ç¿ë ¾È ÇÔ, ¼û±è µî)¸¦ ¹ÝȯÇÕ´Ï´Ù.

    IDTCommandTarget ÀÎÅÍÆäÀ̽º¸¦ »ç¿ëÇÏ¸é °³¹ß ȯ°æ¿¡¼­ ¸í¸íµÈ ¸í·ÉÀ» ±¸ÇöÇÒ ¼ö ÀÖ½À´Ï´Ù. ¶ÇÇÑ ¸í·ÉÀÇ »óŸ¦ Á¤ÀÇÇÏ°í ¸í·ÉÀ» ½ÇÇàÇÒ ¼ö ÀÖ½À´Ï´Ù. AddNamedCommand ¸Þ¼­µå¸¦ »ç¿ëÇÏ¿© Ãß°¡ÇÑ ¸í·ÉÀ» ¸í·É â¿¡ ÀÔ·ÂÇÏ¸é ¸í·É â¿¡¼­´Â ¸ÕÀú IDTCommandTarget ÀÎÅÍÆäÀ̽ºÀÇ QueryStatus ¸Þ¼­µå¸¦ »ç¿ëÇÏ¿© ÇØ´ç ¸í·ÉÀ» »ç¿ëÇÒ ¼ö ÀÖ´ÂÁö ¿©ºÎ¸¦ È®ÀÎÇÕ´Ï´Ù. ExecuteCommand ¸Þ¼­µå¸¦ È£ÃâÇÏ´Â °æ¿ì¿¡µµ ¸¶Âù°¡ÁöÀÔ´Ï´Ù. Ãß°¡ ±â´É¿¡¼­ IDTExtensibility2¿Í ÇÔ²² ÀÌ ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇÏ´Â °æ¿ì Ãß°¡ ±â´É¿¡¼­ ¸¸µç ¸í¸íµÈ ¸í·ÉÀÇ ½ÇÇàÀº ÀÌ ÀÎÅÍÆäÀ̽º·Î Á÷Á¢ ¶ó¿ìÆÃµË´Ï´Ù. (MSDN ¹ßÃé)

    Ŭ·¡½º Á¤ÀÇ ºÎºÐ¿¡ ´ëÇÑ ¼³¸íÀº ¿©±â±îÁö ÇÏ°í ¸Þ¼­µå·Î ³Ñ¾î°¡ º¸µµ·Ï ÇϰڽÀ´Ï´Ù. Ŭ·¡½º Á¤ÀÇ ºÎºÐÀ» ¼³¸íÇÒ ¶§ ³ª¿Â IDTExtensibility2 ÀÎÅÍÆäÀ̽º¸¦ ±â¾ïÇϽóª¿ä? ÀÌ ÀÎÅÍÆäÀ̽ºÀÇ ¸â¹ö¸¦ ±¸ÇöÇØ ³õÀº ³ðµéÀÌ ¹Ù·Î OnConnection, OnDisconnection, OnAddInsUpdate, OnStartupComplete, OnBeginShutdown ÀÔ´Ï´Ù. ¿©±â¿¡¼­´Â ÀÚÁÖ ¾²ÀÌ´Â ¾Õ¿¡ µÎ ³ð¸¸ ¼³¸íÇϰڽÀ´Ï´Ù.

    public void OnConnection

    Ãß°¡ ±â´ÉÀÌ Visual Studio¿¡ ·ÎµåµÉ ¶§¸¶´Ù ¹ß»ýÇÕ´Ï´Ù. µû¶ó¼­ ÀÌ °÷¿¡¼­ DTE °³Ã¼ÀÇ ÃʱâÈ­ ¹× µµ±¸ ¸Þ´º¿¡ Ãß°¡±â´É ¸Þ´º¸¦ µî·ÏÇÏ´Â ÀÛ¾÷ÀÌ ÀÌ·ç¾î Áý´Ï´Ù. ¾Æ·¡ Äڵ尡 ¹Ù·Î ±× °ÍÀÌÁÒ.

    public void OnConnection(object application, Extensibility.ext_ConnectMode connectMode,
                         object addInInst, ref System.Array custom)
    {
        applicationObject = (_DTE)application; //DTE °³Ã¼ º¯¼ö ÃʱâÈ­
        addInInstance = (AddIn)addInInst; //Ãß°¡±â´É(add-in) °³Ã¼ ÃʱâÈ­

        //Ãß°¡ ±â´É(add-in) ¸Þ´º¸¦ VS .NET ¸Þ´º¿¡ Ãß°¡ÇÏ´Â ºÎºÐ
        //»ç½Ç ÀÌ ºÎºÐÀº ¸¶¹ý»ç¿¡¼­ "¿¹, 'µµ±¸' ¸Þ´º Ç׸ñÀ» ¸¸µì´Ï´Ù. È£½ºÆ® ÀÀ¿ëÇÁ·Î±×·¥ÀÌ
        //½ÃÀÛµÉ ¶§¡¦"¸¦ ¼±ÅÃÇ߱⠶§¹®¿¡ Ãß°¡µÈ ÄÚµå ÀÔ´Ï´Ù. ¼±ÅÃÇÏÁö ¾Ê¾Ò´Ù¸é ¾Æ·¡ Äڵ嵵
        //»ý¼ºµÇÁö ¾Ê½À´Ï´Ù.

        if(connectMode == Extensibility.ext_ConnectMode.ext_cm_UISetup)
        {
            object []contextGUIDS = new object[] { };
            Commands commands = applicationObject.Commands;
            _CommandBars commandBars = applicationObject.CommandBars;

            try
            {
                Command command = commands.AddNamedCommand(addInInstance, "MyAddin1",
                                      "MyAddin1", "Executes the command for MyAddin1", true, 59,
                                      ref contextGUIDS, (int)vsCommandStatus.vsCommandStatusSupported
                                      + (int)vsCommandStatus.vsCommandStatusEnabled);
                CommandBar commandBar = (CommandBar)commandBars["Tools"];
                CommandBarControl commandBarControl = command.AddControl(commandBar, 1);
            }
            catch(System.Exception /*e*/)
            {
            }
        }
    }

    public void OnDisconnection

    Visual Studio¿¡¼­ Ãß°¡ ±â´ÉÀÌ ¾ð·ÎµåµÉ ¶§¸¶´Ù ¹ß»ýÇÕ´Ï´Ù.

    Ŭ·¡½º Á¤ÀÇ ºÎºÐ¿¡¼­ ¼³¸íÇÑ IDTCommandTarget ÀÎÅÍÆäÀ̽º ¸â¹ö¸¦ ±¸ÇöÇÑ ¸Þ¼­µåµé ÀÔ´Ï´Ù.

    public void QueryStatus

    ÁöÁ¤ÇÑ ¸í¸íµÈ ¸í·ÉÀÇ ÇöÀç »óÅÂ(»ç¿ë, »ç¿ë ¾È ÇÔ, ¼û±è µî)¸¦ ¹ÝȯÇÕ´Ï´Ù. ¿¹¸¦ µé¾î ƯÁ¤ ¾ð¾î(C#, VB.Net)¸¦ »ç¿ëÇÒ ¶§ ȤÀº ÅØ½ºÆ®¸¦ ¼±ÅÃÇßÀ» ¶§ ¸Þ´º¸¦ º¸À̰ųª ¼û±â·Á ÇÑ´Ù¸é ¿©±â¿¡ ±× Äڵ带 ±¸ÇöÇÏ¸é µË´Ï´Ù.

    public void Exec

    ÁöÁ¤ÇÑ ¸í¸íµÈ ¸í·ÉÀ» ½ÇÇàÇÕ´Ï´Ù. Ãß°¡±â´É(add-in) ¸Þ´º¸¦ Ŭ¸¯ÇßÀ» ¶§ ½ÇÇàµÇ´Â ¸Þ¼­µå ÀÔ´Ï´Ù.

        handled = false;
        if(executeOption == EnvDTE.vsCommandExecOption.vsCommandExecOptionDoDefault)
        {
            if(commandName == "MyAddin1.Connect.MyAddin1")
            {
                 //ÀÌ °÷¿¡ ¸Þ´º°¡ Ŭ¸¯µÆÀ» ¶§ ½ÇÇàÇÒ ±¸¹®À» Ãß°¡ÇÏ¸é µË´Ï´Ù.
                handled = true;
                return;
            }
        }

    Connect.cs ¼Ò½º´Â ¸¶¹ý»ç Áß¿¡¼­ "Ãß°¡ ±â´É ¿É¼Ç"ÀÇ ¿É¼Ç ¼±Åÿ¡ µû¶ó¼­ Á¶±Ý¾¿ ¹Ù²ò´Ï´Ù. ¿É¼Ç¿¡ µû¶ó¼­ ÇÊ¿äÇÑ Äڵ尡 Ãß°¡µÇ°Å³ª Á¦°Å µÇ´Â °ÍÀÌÁÒ.

    ÀüüÀûÀ¸·Î Á¤¸®ÇÏÀÚ¸é Ãß°¡±â´ÉÀ» ±¸ÇöÇϱâ À§Çؼ­´Â ´ÙÀ½°ú °°Àº ÀÛ¾÷ÀÌ ÇÊ¿äÇÕ´Ï´Ù.

    1. DTE °³Ã¼ Á¤ÀÇ
    2. IDTExtensibility2 ÀÎÅÍÆäÀ̽º ±¸Çö
    3. IDTCommandTarget ÀÎÅÍÆäÀ̽º ±¸Çö(UI¸¦ Á¦°øÇÒ °æ¿ì)

    ¿©±â±îÁö ¼Ò½º¿¡ ´ëÇÑ ¼³¸íÀ̾ú½À´Ï´Ù.

    ´Ù½Ã ½Ç½ÀÀ¸·Î µ¹¾Æ°¡¼­ Connect.cs ÆÄÀÏ¿¡ ¿øÇÏ´Â ±â´ÉÀ» ±¸ÇöÇØ º¸µµ·Ï ÇϰڽÀ´Ï´Ù.
    ¿ì¸®´Â ¸Þ´º¸¦ Ŭ¸¯ÇÏ¸é ¸Þ½ÃÁö ¹Ú½º¿¡ ¡°Ãß°¡±â´É!!¡±À̶ó´Â ¸Þ½ÃÁö¸¦ Ãâ·ÂÇØº¸°Ú½À´Ï´Ù.
    ¿ì¼± ÂüÁ¶¿¡ System.Windows.Forms¸¦ Ãß°¡ÇÕ´Ï´Ù.
    ´ÙÀ½Ã³·³ Exec ¸Þ¼­µå¿¡ Äڵ带 Ãß°¡ÇÕ´Ï´Ù.

    public void Exec(string commandName, EnvDTE.vsCommandExecOption executeOption,
                         ref object varIn, ref object varOut, ref bool handled)
    {
        handled = false;
        if(executeOption == EnvDTE.vsCommandExecOption.vsCommandExecOptionDoDefault)
        {
            if(commandName == "MyAddin1.Connect.MyAddin1")
            {
                System.Windows.Forms.MessageBox.Show("Ãß°¡±â´É!!");
                handled = true;
                return;
            }
        }
    }

    ÀÌÁ¦ ¼³Ä¡ ÇÁ·ÎÁ§Æ®¸¦ ºôµåÇÕ´Ï´Ù.

    ÀÌÁ¦ ¿©·¯ºÐÀÇ Ãß°¡±â´É ¼³Ä¡ÇÁ·ÎÁ§Æ®ÀÇ Ãâ·Â°æ·Î(Ãß°¡±â´ÉÇÁ·ÎÁ§Æ®¸í\¼³Ä¡ÇÁ·ÎÁ§Æ®¸í\debug)·Î °¡¼­ Setup.exe¸¦ ½ÇÇàÇØ¼­ Ãß°¡±â´ÉÀ» ¼³Ä¡ÇÕ´Ï´Ù. À̶§ VS .NETÀº ¸ðµÎ ´Ý°í ¼³Ä¡Çϼ¼¿ä.

    VS .NETÀ» ½ÇÇàÇÕ´Ï´Ù. µµ±¸ ¸Þ´º¿¡ ´ÙÀ½°ú °°ÀÌ ¿©·¯ºÐÀÌ ¸¸µç Ãß°¡±â´ÉÀÌ Ãß°¡µÅÀÖ°í ¸Þ´º¸¦ Ŭ¸¯Çϸé Á» Àü¿¡ Ãß°¡Çß´ø Äڵ尡 ½ÇÇàµÇ´Â °ÍÀ» È®ÀÎÇÒ ¼ö ÀÖ½À´Ï´Ù.

    ¿©·¯ºÐµéÀº ¿©±â±îÁö ÇØº¸½Å ¼Ò°¨ÀÌ ¾î¶°½ÅÁö¿ä?

    VS .NET Ãß°¡ ±â´É ¸¸µå´Â °ÍÀ» ¾î¶»°Ô »ý°¢ÇϼÌÀ»Áö ¸ð¸£Áö¸¸ Àú´Â ¾î·Á¿î ÀÛ¾÷À̶ó°í »ý°¢Çϰí ÀÖ¾úÁÒ. ±Ùµ¥ ÀÌ·¸°Ô °£´ÜÇÏ°Ô ±¸ÇöÇÒ ¼ö ÀÖ´Ù´Â °É ¾Ë°í Á» Ç㹫Çß´Ù°í³ª ÇÒ±î¿ä? ¹¹ ±×·± ´À³¦À̾ú½À´Ï´Ù. ´ÙÀ½ °­Á¿¡´Â ½Ç¿ëÀûÀÎ ¿¹Á¦·Î °­Á¸¦ ¸¸µé¾î º¸µµ·Ï ÇϰڽÀ´Ï´Ù.

    DOWNLOAD : °­Á¿¡¼­ »ç¿ëµÈ ¼Ò½º¸¦ ´Ù¿î·Îµå ¹ÞÀ¸½Ã·Á¸é Ŭ¸¯Çϼ¼¿ä

     

    °­Á ¸ñ·ÏÀ¸·Î..