<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>HeeJae's Blog : intellisense</title><link>http://blogs.msdn.com/heejaechang/archive/tags/intellisense/default.aspx</link><description>Tags: intellisense</description><dc:language>ko-KR</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>그외 새로 들어가는 IDE 기능들</title><link>http://blogs.msdn.com/heejaechang/archive/2009/01/25/ide.aspx</link><pubDate>Sun, 25 Jan 2009 17:41:48 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9374992</guid><dc:creator>HeeJae Chang</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/heejaechang/comments/9374992.aspx</comments><wfw:commentRss>http://blogs.msdn.com/heejaechang/commentrss.aspx?PostID=9374992</wfw:commentRss><wfw:comment>http://blogs.msdn.com/heejaechang/rsscomments.aspx?PostID=9374992</wfw:comment><description>&lt;p&gt;전에 쓴 post에 있는 새로운 IDE 기능은 dynamic과 COM interop에 관련되어 새로 추가된 기능들이고, 당연히 이 밖에도 여러가지 새로 VS10에 추가 되는 IDE 기능들이 있습니다. 이번 post에서는 요 기능들에 대해 얘기 할까 합니다.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;일단 새로 추가된 기능을 2가지로 분류 한다면, 첫번째는 새로이 들어가는 기능이고, 두번째는 기존의 기능을 향상 시킨것입니다.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;일단 새로이 들어간 기능에 대해서 먼저 쓰자면, &lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Quick Search&lt;/li&gt;    &lt;ol&gt;     &lt;li&gt;solution 네에 정의된 type, member, filename등을 object browser의 find symbol 보다 아주 빠른 속도로 찾아 주는 기능입니다. 일반적으로 몇 초 안에 원하는걸 찾을수 있습니다.       &lt;br /&gt;&lt;a href="http://blogs.msdn.com/blogfiles/heejaechang/WindowsLiveWriter/IDE_4D3A/image_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/heejaechang/WindowsLiveWriter/IDE_4D3A/image_thumb.png" width="581" height="328" /&gt;&lt;/a&gt; &lt;/li&gt;   &lt;/ol&gt;    &lt;li&gt;Call Hierarchy&lt;/li&gt;    &lt;ol&gt;     &lt;li&gt;이 기능은 method 간의 caller와 callee를 찾아 주는 기능입니다. method간의 관계를 찾아 보는데 아주 유용하죠. 게다가 기존의 “Find All Reference”로는 할수 없는 Override를 찾는다 던가, 아니면 interface의 implement를 찾을수 있습니다.       &lt;br /&gt;&lt;a href="http://blogs.msdn.com/blogfiles/heejaechang/WindowsLiveWriter/IDE_4D3A/image_4.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/heejaechang/WindowsLiveWriter/IDE_4D3A/image_thumb_1.png" width="825" height="397" /&gt;&lt;/a&gt; &lt;/li&gt;   &lt;/ol&gt;    &lt;li&gt;Highlight References&lt;/li&gt;    &lt;ol&gt;     &lt;li&gt;이 기능은 같은 파일안에서 동일한 symbol을 화면에 보여 주는 기능입니다. 기존 “Find all reference”이 전체 솔루션에서 같은 symbol을 찾아준다면 이건 동일한 기능을 한 파일에서만 한다고 생각 하시면 됩니다.       &lt;br /&gt;&lt;a href="http://blogs.msdn.com/blogfiles/heejaechang/WindowsLiveWriter/IDE_4D3A/image_6.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/heejaechang/WindowsLiveWriter/IDE_4D3A/image_thumb_2.png" width="400" height="289" /&gt;&lt;/a&gt; &lt;/li&gt;   &lt;/ol&gt;    &lt;li&gt;Generate from Usage&lt;/li&gt;    &lt;ol&gt;     &lt;li&gt;이 기능은 정의되어 있지 않은 type/constructor/property/enum member 등을 사용하면, 그 type/member를 자동으로 생성해 주는 기능입니다. generate method와 비슷하다고 보시면 됩니다. 이 기능은 소위 말하는 consume first 방식의 프로그래밍을 하시는 분들을 위한 기능입니다.       &lt;br /&gt;&lt;a href="http://blogs.msdn.com/blogfiles/heejaechang/WindowsLiveWriter/IDE_4D3A/image_8.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/heejaechang/WindowsLiveWriter/IDE_4D3A/image_thumb_3.png" width="418" height="142" /&gt;&lt;/a&gt;&lt;/li&gt;   &lt;/ol&gt;    &lt;li&gt;Co/Contravariance&lt;/li&gt;    &lt;ol&gt;     &lt;li&gt; 이 기능은 간단히 말해서 이제 C# 4.0에서 아래와 같이 할수 있다는겁니다.       &lt;br /&gt;&lt;/li&gt;      &lt;table border="0" cellspacing="0" cellpadding="2" width="400"&gt;&lt;tbody&gt;         &lt;tr&gt;           &lt;td valign="top" width="400"&gt;             &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; interface I&amp;lt;in T, out U&amp;gt; { } &lt;/p&gt;              &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; class Base { }               &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; class Derived : Base { } &lt;/p&gt;              &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; class Program               &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {                &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; void Test(I&amp;lt;Base, Derived&amp;gt; ib)                &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {                &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; I&amp;lt;Derived, Base&amp;gt; id = ib;                &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }                &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;           &lt;/td&gt;         &lt;/tr&gt;       &lt;/tbody&gt;&lt;/table&gt;      &lt;li&gt;아시다시피, 기존에는 같은 generic type 사이에서만 conversion이 가능했지, 보시는것 처럼 inheritance에 따라서 assign 하는것이 불가능 했엇죠. 이제 interface와 delegate의 경우, generic argument에 한해, 이것을 지원합니다. 또한 언어만 지원하는게 아니고, BCL혹은 mscorlib에 정의되어 있는 interface와 delegate 중, co/contravariance 를 씀으로써 혜택 받을수 있는 타입들은 이번 CLR 4.0에서 co/contravariance를 쓰도록 바뀌었습니다. 예를 들어 IEnumerable 이나 Func 같은것들 말이죠.&lt;/li&gt;      &lt;li&gt;보다 자세한 내용은 &lt;a href="http://blogs.msdn.com/charlie/archive/2008/10/28/linq-farm-covariance-and-contravariance-in-visual-studio-2010.aspx"&gt;Covariance and Contravariance in C# 4.0&lt;/a&gt; 혹은 &lt;a href="http://blogs.msdn.com/ericlippert/archive/tags/Covariance+and+Contravariance/default.aspx"&gt;Eric Lippert&lt;/a&gt; 을 참조 하시기 바랍니다.&lt;/li&gt;   &lt;/ol&gt; &lt;/ol&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;뭐 이정도 인거 같고, 기존의 있었던 기능들 중에 발전된것들을 나열하자면&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Background errors (live squiggles)&lt;/li&gt;    &lt;ol&gt;     &lt;li&gt;이 기능은 VS 2008 SP1에서 처음 소개된 기능인데, 이번 VS10에서 더욱 다듬어졌습니다.&lt;/li&gt;   &lt;/ol&gt;    &lt;li&gt;Refactoring performance&lt;/li&gt;    &lt;ol&gt;     &lt;li&gt;기존에 사용하던 refactoring engine을 vs 2008에서 새로이 개발한 LAF로 교체 하였습니다. 이로 인해 “Find All reference”, “Rename” 과 같은 여러 refactoring 기능들의 성능이 많이 향상 되었습니다. 특히 local variable 같은 경우는 거의 실시간으로 작동하게 되었습니다.&lt;/li&gt;      &lt;li&gt;전체 solution을 찾아야만 하는 것도 기존의 engine에 비해 거의 2배 이상 성능 향상이 있었습니다.&lt;/li&gt;   &lt;/ol&gt;    &lt;li&gt;refactoring on xml doc comment&lt;/li&gt;    &lt;ol&gt;     &lt;li&gt;밑에 보시는 바와 같이 이제 refactoring operation들이 xml doc comment안에 있는 reference도 찾아낼수 있습니다.       &lt;br /&gt;&lt;a href="http://blogs.msdn.com/blogfiles/heejaechang/WindowsLiveWriter/IDE_4D3A/image_10.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/heejaechang/WindowsLiveWriter/IDE_4D3A/image_thumb_4.png" width="842" height="89" /&gt;&lt;/a&gt; &lt;/li&gt;   &lt;/ol&gt;    &lt;li&gt;Completion set&lt;/li&gt;    &lt;ol&gt;     &lt;li&gt;기존의 completion set과 달리 존재 하지 않는 타입 혹은 심볼을 사용하더라도 강제로 commit 시키지 않습니다. 대신 builder를 이용하여 존재 하지 않은 symbol을 commit 할수 있게 해줍니다. (아쉽게도 제가 아직 이 기능이 작동하는 VS를 인스톨 하지 않았네요…)&lt;/li&gt;   &lt;/ol&gt; &lt;/ol&gt;  &lt;p&gt;뭐 기능이 향상 된건 이정도 인거 같네요. 이것보다 몇개 더 했던거 같은데, 지금 기억나는건 이게 다네요.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;몇 달후에 beta1 아마도 나올테니 관심있으신 분들은 다운 받아서 함 써봐주세요.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;그럼 수고.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9374992" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/heejaechang/archive/tags/visual+studio/default.aspx">visual studio</category><category domain="http://blogs.msdn.com/heejaechang/archive/tags/VS/default.aspx">VS</category><category domain="http://blogs.msdn.com/heejaechang/archive/tags/intellisense/default.aspx">intellisense</category><category domain="http://blogs.msdn.com/heejaechang/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://blogs.msdn.com/heejaechang/archive/tags/performance/default.aspx">performance</category><category domain="http://blogs.msdn.com/heejaechang/archive/tags/IDE/default.aspx">IDE</category><category domain="http://blogs.msdn.com/heejaechang/archive/tags/VS10/default.aspx">VS10</category><category domain="http://blogs.msdn.com/heejaechang/archive/tags/.NET/default.aspx">.NET</category><category domain="http://blogs.msdn.com/heejaechang/archive/tags/4.0/default.aspx">4.0</category><category domain="http://blogs.msdn.com/heejaechang/archive/tags/refactoring/default.aspx">refactoring</category><category domain="http://blogs.msdn.com/heejaechang/archive/tags/Generate+from+usage/default.aspx">Generate from usage</category><category domain="http://blogs.msdn.com/heejaechang/archive/tags/Quick+search/default.aspx">Quick search</category><category domain="http://blogs.msdn.com/heejaechang/archive/tags/call+hierarchy/default.aspx">call hierarchy</category><category domain="http://blogs.msdn.com/heejaechang/archive/tags/covariance/default.aspx">covariance</category><category domain="http://blogs.msdn.com/heejaechang/archive/tags/contravariance/default.aspx">contravariance</category></item><item><title>Com Interop과 dynamic에 대한 IDE의 지원</title><link>http://blogs.msdn.com/heejaechang/archive/2009/01/24/com-interop-dynamic-ide.aspx</link><pubDate>Sun, 25 Jan 2009 07:45:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9374612</guid><dc:creator>HeeJae Chang</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/heejaechang/comments/9374612.aspx</comments><wfw:commentRss>http://blogs.msdn.com/heejaechang/commentrss.aspx?PostID=9374612</wfw:commentRss><wfw:comment>http://blogs.msdn.com/heejaechang/rsscomments.aspx?PostID=9374612</wfw:comment><description>&lt;p&gt;어제 &lt;a mce_href="http://blogs.msdn.com/heejaechang/archive/2009/01/24/9373803.aspx" target="_blank" href="http://blogs.msdn.com/heejaechang/archive/2009/01/24/9373803.aspx"&gt;포스트&lt;/a&gt;에서 제가 C# 4.0에 새로 지원 되는 주 기능으로 Com interop과 dynamic을 얘기 하면서 그에 대한 IDE의 새 기능을 쓰기로 해 놓고 C# 4.0에서 새로 지원 되는 Compiler 기능만 쓰고 이에 대한 IDE 기능은 전혀 쓰질 않았죠 ㅡ.ㅡ.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;이유는 사실 dynamic의 경우 IDE 에서 해 줄수 있는게 별로 없기 때문이기도 합니다.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;이 Com Interop이나 dynamic이 C# 언어 쪽에서 본다면 여러 dynamic 언어들을 무척 간단하게 사용할수 있게 해 주는 반면 IDE 쪽에서는 별로 크게 도움을 줄만한게 없습니다. IDE에서 제공 하는 intellisense 라는게 static 한 타입 정보들이 있어야 보여 줄수 있는건데 dynamic 의 경우 다 runtime에 타입들이 정해지는거라 design time에 IDE가 해줄수 있는거라곤 사실 별로 없죠.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;그래서 이로 인해 새로 들어간 IDE 기능이라고 해 봤자, &lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;ref 나 optional parameter처럼 생략 할수 있는 정보들의 경우, parameter help 및 그 와 비슷한 곳에서 “[]”로 옵션 항목임을 표시해 줍니다.      &lt;br&gt;&lt;a mce_href="http://blogs.msdn.com/blogfiles/heejaechang/WindowsLiveWriter/ComInteropdynamicIDE_E1C4/image_6.png" href="http://blogs.msdn.com/blogfiles/heejaechang/WindowsLiveWriter/ComInteropdynamicIDE_E1C4/image_6.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" mce_src="http://blogs.msdn.com/blogfiles/heejaechang/WindowsLiveWriter/ComInteropdynamicIDE_E1C4/image_thumb_2.png" width="406" height="57" src="http://blogs.msdn.com/blogfiles/heejaechang/WindowsLiveWriter/ComInteropdynamicIDE_E1C4/image_thumb_2.png"&gt;&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;No PIA의 경우는 프로젝트 Property 페이지에 아래와 같은 새 옵션이 들어가게 됐구요. 한가지 알아 두셔야 할 것은, No PIA 옵션을 사용할 경우, COM interface에 들어 있는 모든 object 타입이 자동으로 dynamic 타입으로 변환 됩니다.      &lt;br&gt;&lt;a mce_href="http://blogs.msdn.com/blogfiles/heejaechang/WindowsLiveWriter/ComInteropdynamicIDE_E1C4/image_10.png" href="http://blogs.msdn.com/blogfiles/heejaechang/WindowsLiveWriter/ComInteropdynamicIDE_E1C4/image_10.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" mce_src="http://blogs.msdn.com/blogfiles/heejaechang/WindowsLiveWriter/ComInteropdynamicIDE_E1C4/image_thumb_4.png" width="429" height="211" src="http://blogs.msdn.com/blogfiles/heejaechang/WindowsLiveWriter/ComInteropdynamicIDE_E1C4/image_thumb_4.png"&gt;&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;Named and Optional Parameter의 경우는 method를 정의하거나 부를때 아래처럼 사용할수 사용하실수 있게 됐습니다.      &lt;br&gt; &lt;a mce_href="http://blogs.msdn.com/blogfiles/heejaechang/WindowsLiveWriter/ComInteropdynamicIDE_E1C4/image_18.png" href="http://blogs.msdn.com/blogfiles/heejaechang/WindowsLiveWriter/ComInteropdynamicIDE_E1C4/image_18.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" mce_src="http://blogs.msdn.com/blogfiles/heejaechang/WindowsLiveWriter/ComInteropdynamicIDE_E1C4/image_thumb_8.png" width="697" height="97" src="http://blogs.msdn.com/blogfiles/heejaechang/WindowsLiveWriter/ComInteropdynamicIDE_E1C4/image_thumb_8.png"&gt;&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;Refactoring 기능들의 경우, 새로운 named and optional parameter 들을 지원 할수 있게 변경 됐습니다. 특히 signature change의 경우는 아래와 같이 새로운 dialog를 갖게 됐구요.      &lt;br&gt;&lt;a mce_href="http://blogs.msdn.com/blogfiles/heejaechang/WindowsLiveWriter/ComInteropdynamicIDE_E1C4/image_20.png" href="http://blogs.msdn.com/blogfiles/heejaechang/WindowsLiveWriter/ComInteropdynamicIDE_E1C4/image_20.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" mce_src="http://blogs.msdn.com/blogfiles/heejaechang/WindowsLiveWriter/ComInteropdynamicIDE_E1C4/image_thumb_9.png" width="573" height="402" src="http://blogs.msdn.com/blogfiles/heejaechang/WindowsLiveWriter/ComInteropdynamicIDE_E1C4/image_thumb_9.png"&gt;&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;Dynamic invocation의 경우는 아쉽게도 intellisense가 지원되지 않습니다. 다만, 현재 사용하는 expression이 dynamic 구문이라는걸 알려주기 위해 아래처럼 표시를 해줍니다.      &lt;br&gt; &lt;a mce_href="http://blogs.msdn.com/blogfiles/heejaechang/WindowsLiveWriter/ComInteropdynamicIDE_E1C4/image_24.png" href="http://blogs.msdn.com/blogfiles/heejaechang/WindowsLiveWriter/ComInteropdynamicIDE_E1C4/image_24.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" mce_src="http://blogs.msdn.com/blogfiles/heejaechang/WindowsLiveWriter/ComInteropdynamicIDE_E1C4/image_thumb_11.png" width="310" height="117" src="http://blogs.msdn.com/blogfiles/heejaechang/WindowsLiveWriter/ComInteropdynamicIDE_E1C4/image_thumb_11.png"&gt;&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;QuickInfo의 경우도 역시, 현재 마우스 밑에 있는 구문이 dynamic expression이라는것만 알려줍니다.      &lt;br&gt;&lt;a mce_href="http://blogs.msdn.com/blogfiles/heejaechang/WindowsLiveWriter/ComInteropdynamicIDE_E1C4/image_26.png" href="http://blogs.msdn.com/blogfiles/heejaechang/WindowsLiveWriter/ComInteropdynamicIDE_E1C4/image_26.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" mce_src="http://blogs.msdn.com/blogfiles/heejaechang/WindowsLiveWriter/ComInteropdynamicIDE_E1C4/image_thumb_12.png" width="318" height="115" src="http://blogs.msdn.com/blogfiles/heejaechang/WindowsLiveWriter/ComInteropdynamicIDE_E1C4/image_thumb_12.png"&gt;&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;Edit and Continue 역시, 현재로써는 method block안에 dynamic invocation 이 있을 경우, EnC를 사용할수 없도록 되어 있습니다.      &lt;br&gt;&lt;a mce_href="http://blogs.msdn.com/blogfiles/heejaechang/WindowsLiveWriter/ComInteropdynamicIDE_E1C4/image_28.png" href="http://blogs.msdn.com/blogfiles/heejaechang/WindowsLiveWriter/ComInteropdynamicIDE_E1C4/image_28.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" mce_src="http://blogs.msdn.com/blogfiles/heejaechang/WindowsLiveWriter/ComInteropdynamicIDE_E1C4/image_thumb_13.png" width="743" height="90" src="http://blogs.msdn.com/blogfiles/heejaechang/WindowsLiveWriter/ComInteropdynamicIDE_E1C4/image_thumb_13.png"&gt;&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;Refactoring 역시 dynamic member들의 경우 지원 되지 않습니다. Go to definition 역시 지원되지 않구요. 이유는 당연히 design time에 타입이 무엇인지 모르므로, member들 역시 마찬가지구요. 따라서 아무것도 지원되지 않습니다. &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;아마 이정도가 C# 4.0의 새로운 기능인 COM interop과 dynamic을 위해 새로 들어간 IDE기능들인거 같습니다. 비록 이번 버젼에는 이정도 밖에 지원하지 않지만, 내부적으로는 어떻게 해야 dynamic 타입을 static 정보가 존재 하는 기존 C# construct들 만큼은 정보들을 제공할수 있을까 논의 중입니다. F#의 interactive window와 비슷한 뭐 그런것 말이죠.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;그럼 도움 되었음 좋겠네요.&lt;/p&gt;  &lt;p&gt;수고.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9374612" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/heejaechang/archive/tags/visual+studio/default.aspx">visual studio</category><category domain="http://blogs.msdn.com/heejaechang/archive/tags/VS/default.aspx">VS</category><category domain="http://blogs.msdn.com/heejaechang/archive/tags/2008/default.aspx">2008</category><category domain="http://blogs.msdn.com/heejaechang/archive/tags/intellisense/default.aspx">intellisense</category><category domain="http://blogs.msdn.com/heejaechang/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://blogs.msdn.com/heejaechang/archive/tags/IDE/default.aspx">IDE</category><category domain="http://blogs.msdn.com/heejaechang/archive/tags/VS10/default.aspx">VS10</category><category domain="http://blogs.msdn.com/heejaechang/archive/tags/.NET/default.aspx">.NET</category><category domain="http://blogs.msdn.com/heejaechang/archive/tags/dynamic/default.aspx">dynamic</category><category domain="http://blogs.msdn.com/heejaechang/archive/tags/4.0/default.aspx">4.0</category><category domain="http://blogs.msdn.com/heejaechang/archive/tags/COM+interop/default.aspx">COM interop</category></item><item><title>Visual Studio 2008의 새로운 intellisense</title><link>http://blogs.msdn.com/heejaechang/archive/2008/03/09/visual-studio-2008-intellisense.aspx</link><pubDate>Sun, 09 Mar 2008 12:20:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8116817</guid><dc:creator>HeeJae Chang</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/heejaechang/comments/8116817.aspx</comments><wfw:commentRss>http://blogs.msdn.com/heejaechang/commentrss.aspx?PostID=8116817</wfw:commentRss><wfw:comment>http://blogs.msdn.com/heejaechang/rsscomments.aspx?PostID=8116817</wfw:comment><description>&lt;P&gt;이번엔 VS 2008의 새로운 기능을 얘기 해 볼까 합니다. 뭐 각 버젼업 마다 새로운 기능을 추가 하는데 이번 VS 2008에서 C# IDE는 사실 C# 3.0의 새로운 기능을 지원 하는데만 거의 모든 시간을 다 사용했습니다.&amp;nbsp; 여기서 C# 3.0의 새로운 기능이라 함은 lambda expression, type inference (var), query expression, object/collection initializer, extension methods, 등등을 말합니다. &lt;/P&gt;
&lt;P&gt;위에 나열한 이 새로운 C# 3.0 기능들을 지원하기 위해 사실 저희 팀은 binding을 근본적으로 새로 만들어야 했습니다. VS 2005을 비롯한 그 이전 버젼의 경우, C# IDE의 intellisense는 사실 모든 expression을 이해 한게 아니고, 거의 top level construct들만 이해 했습니다. 쉽게 말하면 어떤 type들이 존재 하는지, 각 타입 에는 어떤 멤버들이 존재 하는지 멤버의 리턴 타입은 뭔지 이런것들은 이해 했지만 expression 레벨로 내려가면 전혀 이해 하지 못했습니다. 예를 들면 (2 + 2) Dot 을 누르면 (2+2)라는 expression을 이해 하지 못하기 때문에 intellisense를 제공 하지 못했습니다. &lt;/P&gt;
&lt;P&gt;C# 2.0 까지는 이런게 큰 문제가 되지 않았습니다. 이유는 C# 2.0 까지만 해도 C#이 아주 정적이고 명시적인 언어라 expression 레벨을 지원 하지않아도 프로그램밍 하는데 아주 큰 불편을 주진 않았기 때문이죠. 그런데 이게 C# 3.0으로 완전히 변해 버렸습니다. type inferencing 하나만 가지고도 expression 레벨을 지원 하지 않고는 사용하기가 너무 힘들어 진것이죠. 게다가 query 와 anonymous type 까지 곁들여 준다면.. 기존의 C# intellisense로는 아무것도 할수 없게 된겁입니다. 그래서 VS 2008 에서는 intellisense에 대한 대대적인 보수 작업을 하게 되었습니다.&lt;/P&gt;
&lt;P&gt;VS 2005 및 그 이전 버젼의 경우, C# IDE는 IDE 자체가 intellisense를 위한 binding 로직을 가지고 있었습니다. compiler의 binding 로직과는 다른 IDE만을 위한 기능이였죠. 이유야 당연히 compiler와 IDE는 서로 너무 다른 전제 조건을 가지고 있기 때문이죠. IDE의 경우는 99%는 잘못된 코드를 가지고 있고 속도가 정확성 보다 우선순위인데 반해, Compiler의 경우는 99%가 옳은 코드를 가지고 있고 정확성이 속도보다 우선 순위이기 때문이죠. 근데 이게 VS 2008에서 하나로 합쳐졌습니다. 이제 C# IDE의 intellisense의 정보의 정확성은 compiler의 그것과 같아 진것이죠. 물론 그러기 위해서 속도 개선 및 error tolerance 등등 아주 많은 기초 작업이 있었죠.&lt;/P&gt;
&lt;P&gt;하여간, VS 2008의 C# IDE 써 보시면 intellisense에서 제공하는 정보가 전보다 확실히 더 정확해 진것을 보실수 있을겁니다.&lt;/P&gt;
&lt;P&gt;(1 + 1)을 이해 함은 물론이거니와 new int [] { 1, 2, 3, 4 } 도 이해 하는 ... ㅋㅋ&lt;/P&gt;
&lt;P&gt;그럼 수고!!!&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8116817" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/heejaechang/archive/tags/visual+studio/default.aspx">visual studio</category><category domain="http://blogs.msdn.com/heejaechang/archive/tags/VS/default.aspx">VS</category><category domain="http://blogs.msdn.com/heejaechang/archive/tags/2008/default.aspx">2008</category><category domain="http://blogs.msdn.com/heejaechang/archive/tags/intellisense/default.aspx">intellisense</category><category domain="http://blogs.msdn.com/heejaechang/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://blogs.msdn.com/heejaechang/archive/tags/3.0/default.aspx">3.0</category><category domain="http://blogs.msdn.com/heejaechang/archive/tags/IDE/default.aspx">IDE</category></item></channel></rss>