<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-US"><title type="html">Partho's Weblog</title><subtitle type="html">Random notes from a developer...</subtitle><id>http://blogs.msdn.com/parthopdas/atom.xml</id><link rel="alternate" type="text/html" href="http://blogs.msdn.com/parthopdas/default.aspx" /><link rel="self" type="application/atom+xml" href="http://blogs.msdn.com/parthopdas/atom.xml" /><generator uri="http://communityserver.org" version="2.1.61025.2">Community Server</generator><updated>2005-02-03T23:10:00Z</updated><entry><title>Visual Debugger for MSBuild Projects</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/parthopdas/archive/2007/12/01/visual-debugger-for-msbuild-projects.aspx" /><id>http://blogs.msdn.com/parthopdas/archive/2007/12/01/visual-debugger-for-msbuild-projects.aspx</id><published>2007-12-01T17:16:26Z</published><updated>2007-12-01T17:16:26Z</updated><content type="html">Folks, Hi! A recent feature poll on the MSBuild blog seems to indicate that a debugger for MSBuild projects is the #1 vNext request from you. Lot of other folks (such as here and here ) have explicitly blogged about this requirement. Over the last week I put together a Visual Debugger for MSBuild Projects. The v1 alpha feature list looks like: v1 Feature Set: Load project and arbitrary target files Set/View build environment Step-Into tasks and targets (F11), Run (F5), Break execution, Step into...(&lt;a href="http://blogs.msdn.com/parthopdas/archive/2007/12/01/visual-debugger-for-msbuild-projects.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=6631013" width="1" height="1"&gt;</content><author><name>parthopdas</name><uri>http://blogs.msdn.com/members/parthopdas.aspx</uri></author></entry><entry><title>Model-View-Controller Design Pattern...</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/parthopdas/archive/2007/11/06/model-view-controller-design-pattern.aspx" /><id>http://blogs.msdn.com/parthopdas/archive/2007/11/06/model-view-controller-design-pattern.aspx</id><published>2007-11-06T12:41:24Z</published><updated>2007-11-06T12:41:24Z</updated><content type="html">This post is really to update my blog so that is doesn't get deleted due to massive levels of inactivity. I am also experimenting with Windows Live Writer - it totally kicks ass! Anyways getting back to the point... This particular diagram conveys pretty much everything about M-V-C: &amp;#160; Some additional links on M-V-C (Yes, yes... Google can give this information - but I am trying to save my blog really) http://weblogs.asp.net/scottgu/archive/2007/10/14/asp-net-mvc-framework.aspx http://java.sun.com/blueprints/patterns/MVC-detailed.html...(&lt;a href="http://blogs.msdn.com/parthopdas/archive/2007/11/06/model-view-controller-design-pattern.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=5932283" width="1" height="1"&gt;</content><author><name>parthopdas</name><uri>http://blogs.msdn.com/members/parthopdas.aspx</uri></author></entry><entry><title>MEDC India 2006, Bangalore</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/parthopdas/archive/2006/04/12/575007.aspx" /><link rel="enclosure" type="application/x-zip-compressed" length="846848" href="http://blogs.msdn.com/parthopdas/attachment/575007.ashx" /><id>http://blogs.msdn.com/parthopdas/archive/2006/04/12/575007.aspx</id><published>2006-04-12T18:56:00Z</published><updated>2006-04-12T18:56:00Z</updated><content type="html">MEDC-India 2006. Thanks you for attending it. We loved talking to you and hearing from you......(&lt;a href="http://blogs.msdn.com/parthopdas/archive/2006/04/12/575007.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=575007" width="1" height="1"&gt;</content><author><name>parthopdas</name><uri>http://blogs.msdn.com/members/parthopdas.aspx</uri></author><category term="Visual Studio For Devices" scheme="http://blogs.msdn.com/parthopdas/archive/tags/Visual+Studio+For+Devices/default.aspx" /></entry><entry><title>Destination SQL Server 2005 (Mobile Edition)</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/parthopdas/archive/2006/01/07/510384.aspx" /><id>http://blogs.msdn.com/parthopdas/archive/2006/01/07/510384.aspx</id><published>2006-01-07T13:26:00Z</published><updated>2006-01-07T13:26:00Z</updated><content type="html">Pushing SQL Server Mobile database file from a desktop application developed in VS2005 to the mobile device...(&lt;a href="http://blogs.msdn.com/parthopdas/archive/2006/01/07/510384.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=510384" width="1" height="1"&gt;</content><author><name>parthopdas</name><uri>http://blogs.msdn.com/members/parthopdas.aspx</uri></author><category term="Visual Studio For Devices" scheme="http://blogs.msdn.com/parthopdas/archive/tags/Visual+Studio+For+Devices/default.aspx" /></entry><entry><title>Understanding the TypeDescriptor: A Metadata Engine for Designtime Code</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/parthopdas/archive/2006/01/03/509103.aspx" /><id>http://blogs.msdn.com/parthopdas/archive/2006/01/03/509103.aspx</id><published>2006-01-04T10:31:00Z</published><updated>2006-01-04T10:31:00Z</updated><content type="html">A dump of my understanding of the TypeDescriptor: A Metadata Engine for Designtime Code......(&lt;a href="http://blogs.msdn.com/parthopdas/archive/2006/01/03/509103.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=509103" width="1" height="1"&gt;</content><author><name>parthopdas</name><uri>http://blogs.msdn.com/members/parthopdas.aspx</uri></author><category term="Designer Architecture" scheme="http://blogs.msdn.com/parthopdas/archive/tags/Designer+Architecture/default.aspx" /></entry><entry><title>Writing .NET CF 2.0 Designtime Code – I: An Overview…</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/parthopdas/archive/2005/10/27/485724.aspx" /><id>http://blogs.msdn.com/parthopdas/archive/2005/10/27/485724.aspx</id><published>2005-10-27T20:27:00Z</published><updated>2005-10-27T20:27:00Z</updated><content type="html">Hi Folks... I am back and it’d have been sooner if not for ELDS :( Never mind that. As many of you have already noted , with Visual Studio 2005 there have been radical changes in the way designtime code is written for .NET Desktop/CF 2.0. These changes in the .NET CF Designtime architecture do break backward compatibility: .NET CF 1.0 Designtime code will refuse to even compile as .NET CF 2.0 Designtime code. But at the same time we believe these changes will: Improve the experience of the designtime...(&lt;a href="http://blogs.msdn.com/parthopdas/archive/2005/10/27/485724.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=485724" width="1" height="1"&gt;</content><author><name>parthopdas</name><uri>http://blogs.msdn.com/members/parthopdas.aspx</uri></author><category term="Designer Architecture" scheme="http://blogs.msdn.com/parthopdas/archive/tags/Designer+Architecture/default.aspx" /></entry><entry><title>Generics Terminology in .NET Framework</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/parthopdas/archive/2005/10/21/483463.aspx" /><id>http://blogs.msdn.com/parthopdas/archive/2005/10/21/483463.aspx</id><published>2005-10-21T18:30:00Z</published><updated>2005-10-21T18:30:00Z</updated><content type="html">&lt;DIV class=P2DBlogSection&gt;
&lt;P&gt;Hi Folks...&lt;/P&gt;
&lt;P&gt;The other day I was investigating an issue that finally boiled down to incorrect usage of System.Reflection &amp;amp; System.Reflection.Emit APIs (SR &amp;amp; SRE hereafter) to analyze Generic types. We were using Type.IsGenericParameter instead of using Type.IsGenericType. During investigation, what made things worse is that each time I went through the first paragraph of their respective help pages, I got more confused. Then I decided to read the Remarks section of the help pages and I was hopelessly lost because it seemed to be written in a dialect of English that I didn’t speak!&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Do you know the difference between Type.IsGenericParameter and Type.IsGenericType? The difference between Generic Type Parameter and Generic Type Argument perhaps? How about Closed Constructed Generic Method and Open Constructed Generic Method? These are a part of some subtle terminology introduced into .NET Framework with Generics. Using SR &amp;amp; SRE without a clear understanding this terminology is only going to land you into trouble. You are going to introduce bugs into your code and you will have a really hard time debugging your own code! Just like me!&lt;/P&gt;
&lt;P&gt;It is all there in MSDN but it is highly confusing at the first glance! So I decided to get done with this for good. I spent a good 3 hours going over Generics terminology in .NET Framework in MSDN. This is a gist of my understanding. I am all clear now. You should be too before you begin using SR and SRE.&lt;/P&gt;
&lt;H3 style="MARGIN-BOTTOM: 0.3em"&gt;&lt;SPAN style="FONT-SIZE: 1.1em"&gt;Basic Terminology&lt;/SPAN&gt;&lt;/H3&gt;
&lt;UL class=IndentedListLevel0 style="MARGIN-TOP: 0.3em"&gt;
&lt;LI class=IndentedListLevel0Item&gt;&lt;STRONG&gt;Generics&lt;/STRONG&gt;: 
&lt;UL class=IndentedListLevel0&gt;
&lt;LI class=IndentedListLevel0Item&gt;They are classes/structs/interfaces/methods (CSIM hereafter) that have placeholders for one or more of the types they store and/or use. &lt;/LI&gt;&lt;/UL&gt;
&lt;LI class=IndentedListLevel0Item&gt;&lt;STRONG&gt;Generic Type&lt;/STRONG&gt;: 
&lt;UL class=IndentedListLevel0&gt;
&lt;LI class=IndentedListLevel0Item&gt;Union of the set of all &lt;EM&gt;Generic Type Definitions&lt;/EM&gt; and &lt;EM&gt;Constructed Types&lt;/EM&gt;. 
&lt;LI class=IndentedListLevel0Item&gt;A System.Type object represents a &lt;EM&gt;Generic Type&lt;/EM&gt; iff its IsGenericType property is true &lt;/LI&gt;&lt;/UL&gt;
&lt;LI class=IndentedListLevel0Item&gt;&lt;STRONG&gt;Generic Method&lt;/STRONG&gt;: 
&lt;UL class=IndentedListLevel0&gt;
&lt;LI class=IndentedListLevel0Item&gt;Must have a non-empty list of &lt;EM&gt;Generic Type Parameters&lt;/EM&gt;. 
&lt;LI class=IndentedListLevel0Item&gt;A method being a &lt;EM&gt;Generic Method&lt;/EM&gt; doesn’t have anything to do with the enclosing type being &lt;EM&gt;Generic Type&lt;/EM&gt; or not 
&lt;LI class=IndentedListLevel0Item&gt;Union of the set of all &lt;EM&gt;Generic Method Definitions&lt;/EM&gt; and &lt;EM&gt;Constructed Methods&lt;/EM&gt;. 
&lt;LI class=IndentedListLevel0Item&gt;&lt;EM&gt;Generic Type Parameters&lt;/EM&gt; can appear as the return type or as the types of the formal parameters 
&lt;LI class=IndentedListLevel0Item&gt;A System.Reflection.MethodInfo object represents a &lt;EM&gt;Generic Method&lt;/EM&gt; iff its IsGenericMethod property is true &lt;/LI&gt;&lt;/UL&gt;
&lt;LI class=IndentedListLevel0Item&gt;&lt;STRONG&gt;Generic Type Definition&lt;/STRONG&gt;: 
&lt;UL class=IndentedListLevel0&gt;
&lt;LI class=IndentedListLevel0Item&gt;A CSI declaration that serves as a template, with placeholders for the types it can contain or use. 
&lt;LI class=IndentedListLevel0Item&gt;A System.Type object represents a &lt;EM&gt;Generic Type Definition&lt;/EM&gt; iff its IsGenericTypeDefinition property is true &lt;/LI&gt;&lt;/UL&gt;
&lt;LI class=IndentedListLevel0Item&gt;&lt;STRONG&gt;Generic Method Definition&lt;/STRONG&gt;: 
&lt;UL class=IndentedListLevel0&gt;
&lt;LI class=IndentedListLevel0Item&gt;A method with two parameter lists: A non-empty list of placeholder types and a list of formal parameters 
&lt;LI class=IndentedListLevel0Item&gt;A System.Reflection.MethodInfo object represents a &lt;EM&gt;Generic Method Definition&lt;/EM&gt; iff its IsGenericMethodDefinition property is true &lt;/LI&gt;&lt;/UL&gt;
&lt;LI class=IndentedListLevel0Item&gt;&lt;STRONG&gt;Generic Type Parameter&lt;/STRONG&gt;: 
&lt;UL class=IndentedListLevel0&gt;
&lt;LI class=IndentedListLevel0Item&gt;It is the placeholder type in a &lt;EM&gt;Generic Type/Method Definition&lt;/EM&gt;. 
&lt;LI class=IndentedListLevel0Item&gt;It is represented using a System.Type object in SR and SRE. 
&lt;LI class=IndentedListLevel0Item&gt;A System.Type object represents a &lt;EM&gt;Generic Type Parameter&lt;/EM&gt; iff its IsGenericParameter property is true 
&lt;LI class=IndentedListLevel0Item&gt;Example: Is T in Dictionary&amp;lt;T, int&amp;gt; in "class C&amp;lt;T&amp;gt; : Dictionary&amp;lt;T, int&amp;gt;" a &lt;EM&gt;Generic Type Parameter&lt;/EM&gt;? Yes! &lt;/LI&gt;&lt;/UL&gt;
&lt;LI class=IndentedListLevel0Item&gt;&lt;STRONG&gt;Generic Type Argument&lt;/STRONG&gt;: 
&lt;UL class=IndentedListLevel0&gt;
&lt;LI class=IndentedListLevel0Item&gt;It is any type that is substituted for a &lt;EM&gt;Generic Type Parameter&lt;/EM&gt;. It could be another &lt;EM&gt;Generic Type Parameter&lt;/EM&gt;. 
&lt;LI class=IndentedListLevel0Item&gt;IsGenericParameter is false 
&lt;LI class=IndentedListLevel0Item&gt;A System.Type object represents a &lt;EM&gt;Generic Type Argument&lt;/EM&gt; iff its IsGenericParameter property is false &lt;/LI&gt;&lt;/UL&gt;
&lt;LI class=IndentedListLevel0Item&gt;&lt;STRONG&gt;Constructed Generic Type/Method&lt;/STRONG&gt;: 
&lt;UL class=IndentedListLevel0&gt;
&lt;LI class=IndentedListLevel0Item&gt;A new type/method constructed as a result of specifying actual types for one or more of the &lt;EM&gt;Generic Type Parameters&lt;/EM&gt; of a &lt;EM&gt;Generic Type/Method Definition&lt;/EM&gt;. 
&lt;LI class=IndentedListLevel0Item&gt;Example: Is A&amp;lt;B&amp;lt;, &amp;gt;, &amp;gt; a &lt;EM&gt;Constructed Generic Type&lt;/EM&gt;? Yes! &lt;/LI&gt;&lt;/UL&gt;
&lt;LI class=IndentedListLevel0Item&gt;&lt;STRONG&gt;Closed/Open Constructed Generic Type&lt;/STRONG&gt;: 
&lt;UL class=IndentedListLevel0&gt;
&lt;LI class=IndentedListLevel0Item&gt;A &lt;EM&gt;Closed Constructed Generic Type&lt;/EM&gt; is the result of specifying &lt;EM&gt;Generic Type Arguments&lt;/EM&gt; for all &lt;EM&gt;Generic Type Parameters&lt;/EM&gt; of a &lt;EM&gt;Generic Type/Method Definition&lt;/EM&gt;. An &lt;EM&gt;Open Constructed Generic Type&lt;/EM&gt; otherwise. 
&lt;LI class=IndentedListLevel0Item&gt;A System.Type object represents a &lt;EM&gt;Closed Constructed Generic Type&lt;/EM&gt; iff its ContainsGenericParameters property is false. Otherwise it is an &lt;EM&gt;Open Constructed Generic Type&lt;/EM&gt;. 
&lt;LI class=IndentedListLevel0Item&gt;Only a &lt;EM&gt;Closed Constructed Generic Type&lt;/EM&gt; can be instantiated 
&lt;LI class=IndentedListLevel0Item&gt;Is A&amp;lt;B&amp;lt;T, string&amp;gt;, int&amp;gt;.C a &lt;EM&gt;Closed Constructed Generic Type&lt;/EM&gt;? No! &lt;/LI&gt;&lt;/UL&gt;
&lt;LI class=IndentedListLevel0Item&gt;&lt;STRONG&gt;Closed/Open Constructed Generic Method&lt;/STRONG&gt;: 
&lt;UL class=IndentedListLevel0&gt;
&lt;LI class=IndentedListLevel0Item&gt;A &lt;EM&gt;Closed Constructed Generic Method&lt;/EM&gt; has no unassigned &lt;EM&gt;Generic Type Parameters&lt;/EM&gt; *and* the containing type is a &lt;EM&gt;Closed Constructed Generic Type&lt;/EM&gt; *and* all the &lt;EM&gt;Generic Type Arguments&lt;/EM&gt; are &lt;EM&gt;Closed Constructed Generic Types&lt;/EM&gt;. An &lt;EM&gt;Open Constructed Generic Method&lt;/EM&gt; otherwise. 
&lt;LI class=IndentedListLevel0Item&gt;A System.Reflection.MethodInfo object represents a &lt;EM&gt;Closed Constructed Generic Method&lt;/EM&gt; iff its ContainsGenericParameters property is false. Otherwise it is an &lt;EM&gt;Open Constructed Generic Method&lt;/EM&gt; &lt;/LI&gt;&lt;/UL&gt;
&lt;LI class=IndentedListLevel0Item&gt;&lt;STRONG&gt;Constraints&lt;/STRONG&gt;: 
&lt;UL class=IndentedListLevel0&gt;
&lt;LI class=IndentedListLevel0Item&gt;They are limits placed on &lt;EM&gt;Generic Type Parameters&lt;/EM&gt;. 
&lt;LI class=IndentedListLevel0Item&gt;The GenericParameterAttributes property of a System.Type object representing a &lt;EM&gt;Generic Type Parameter&lt;/EM&gt; gets a combination of System.Reflection.GenericParameterAttributes flags that describe its covariance and special constraints 
&lt;LI class=IndentedListLevel0Item&gt;The GetGenericParameterConstraints() method of a System.Type object representing a &lt;EM&gt;Generic Type Parameter&lt;/EM&gt; returns an array of System.Type objects that represent its constraints. &lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;H3 style="MARGIN-BOTTOM: 0.3em"&gt;&lt;SPAN style="FONT-SIZE: 1.1em"&gt;A few points to note &lt;/SPAN&gt;&lt;/H3&gt;
&lt;UL class=IndentedListLevel0 style="MARGIN-TOP: 0.3em"&gt;
&lt;LI class=IndentedListLevel0Item&gt;If a nested types doesn't have &lt;EM&gt;Generic Type Parameters&lt;/EM&gt; of its own, the enclosing type determines the above for it. 
&lt;LI class=IndentedListLevel0Item&gt;&lt;EM&gt;Generic Type Parameters&lt;/EM&gt; and &lt;EM&gt;Generic Type Arguments&lt;/EM&gt; have the same relation as the parameters and arguments of a function. 
&lt;LI class=IndentedListLevel0Item&gt;typeof(Dictionary&amp;lt;, &amp;gt;).MakeArrayType() returns a System.Type object that is not a &lt;EM&gt;Generic Type&lt;/EM&gt; but is an Open Constructed Generic Type. Same for pointers 
&lt;LI class=IndentedListLevel0Item&gt;In SR &amp;amp; SRE: 
&lt;UL class=IndentedListLevel0&gt;
&lt;LI class=IndentedListLevel0Item&gt;&lt;EM&gt;Generic Type Parameters&lt;/EM&gt; are represented by System.Type 
&lt;LI class=IndentedListLevel0Item&gt;A Type/MethodInfo object representing a &lt;EM&gt;Generic Type/Method&lt;/EM&gt; has an array of types containing the &lt;EM&gt;Generic Type Parameters&lt;/EM&gt; and &lt;EM&gt;Generic Type Arguments&lt;/EM&gt; &lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;H3 style="MARGIN-BOTTOM: 0.3em"&gt;&lt;SPAN style="FONT-SIZE: 1.1em"&gt;Examples to consolidate our understanding&lt;/SPAN&gt;&lt;/H3&gt;
&lt;P&gt;Consider the followign code snippet. The invariant conditions are shown in the comments below it.&lt;/P&gt;
&lt;P class=InlinedCode&gt;&lt;SPAN class=InlinedCode_Keyword&gt;public&lt;/SPAN&gt;&lt;SPAN class=InlinedCode_Code&gt; &lt;/SPAN&gt;&lt;SPAN class=InlinedCode_Keyword&gt;class&lt;/SPAN&gt;&lt;SPAN class=InlinedCode_Class&gt; Base&lt;/SPAN&gt;&lt;SPAN class=InlinedCode_Operator&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class=InlinedCode_Identifier&gt;T&lt;/SPAN&gt;&lt;SPAN class=InlinedCode_Code&gt;, &lt;/SPAN&gt;&lt;SPAN class=InlinedCode_Identifier&gt;U&lt;/SPAN&gt;&lt;SPAN class=InlinedCode_Operator&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN class=InlinedCode_Code&gt;&lt;BR&gt;{&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN class=InlinedCode_Keyword&gt;&amp;nbsp; &amp;nbsp; public&lt;/SPAN&gt;&lt;SPAN class=InlinedCode_Code&gt; &lt;/SPAN&gt;&lt;SPAN class=InlinedCode_Keyword&gt;static&lt;/SPAN&gt;&lt;SPAN class=InlinedCode_Code&gt; &lt;/SPAN&gt;&lt;SPAN class=InlinedCode_Identifier&gt;T&lt;/SPAN&gt;&lt;SPAN class=InlinedCode_Code&gt; &lt;/SPAN&gt;&lt;SPAN class=InlinedCode_Identifier&gt;M1Base&lt;/SPAN&gt;&lt;SPAN class=InlinedCode_Code&gt;(&lt;/SPAN&gt;&lt;SPAN class=InlinedCode_Identifier&gt;U&lt;/SPAN&gt;&lt;SPAN class=InlinedCode_Code&gt; &lt;/SPAN&gt;&lt;SPAN class=InlinedCode_Identifier&gt;u&lt;/SPAN&gt;&lt;SPAN class=InlinedCode_Code&gt;) &lt;/SPAN&gt;&lt;SPAN class=InlinedCode_Code&gt;{ &lt;/SPAN&gt;&lt;SPAN class=InlinedCode_Keyword&gt;return&lt;/SPAN&gt;&lt;SPAN class=InlinedCode_Code&gt; &lt;/SPAN&gt;&lt;SPAN class=InlinedCode_Keyword&gt;default&lt;/SPAN&gt;&lt;SPAN class=InlinedCode_Code&gt;(&lt;/SPAN&gt;&lt;SPAN class=InlinedCode_Identifier&gt;T&lt;/SPAN&gt;&lt;SPAN class=InlinedCode_Code&gt;); &lt;/SPAN&gt;&lt;SPAN class=InlinedCode_Code&gt;}&lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN class=InlinedCode_Code&gt;}&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN class=InlinedCode_Keyword&gt;&lt;BR&gt;public&lt;/SPAN&gt;&lt;SPAN class=InlinedCode_Code&gt; &lt;/SPAN&gt;&lt;SPAN class=InlinedCode_Keyword&gt;class&lt;/SPAN&gt;&lt;SPAN class=InlinedCode_Class&gt; Derived&lt;/SPAN&gt;&lt;SPAN class=InlinedCode_Operator&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class=InlinedCode_Identifier&gt;V&lt;/SPAN&gt;&lt;SPAN class=InlinedCode_Operator&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN class=InlinedCode_Class&gt; : Base&lt;/SPAN&gt;&lt;SPAN class=InlinedCode_Operator&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class=InlinedCode_Keyword&gt;string&lt;/SPAN&gt;&lt;SPAN class=InlinedCode_Code&gt;, &lt;/SPAN&gt;&lt;SPAN class=InlinedCode_Identifier&gt;V&lt;/SPAN&gt;&lt;SPAN class=InlinedCode_Operator&gt;&amp;gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN class=InlinedCode_Code&gt;{&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN class=InlinedCode_Keyword&gt;&amp;nbsp; &amp;nbsp; public&lt;/SPAN&gt;&lt;SPAN class=InlinedCode_Class&gt; G&lt;/SPAN&gt;&lt;SPAN class=InlinedCode_Operator&gt;&amp;lt;&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN class=InlinedCode_Code&gt;Derived&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN class=InlinedCode_Operator&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class=InlinedCode_Identifier&gt;V&lt;/SPAN&gt;&lt;SPAN class=InlinedCode_Operator&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN class=InlinedCode_Code&gt; &lt;/SPAN&gt;&lt;SPAN class=InlinedCode_Identifier&gt;F&lt;/SPAN&gt;&lt;SPAN class=InlinedCode_Code&gt;;&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN class=InlinedCode_Keyword&gt;&amp;nbsp; &amp;nbsp; &lt;BR&gt;&amp;nbsp; &amp;nbsp; public&lt;/SPAN&gt;&lt;SPAN class=InlinedCode_Code&gt; &lt;/SPAN&gt;&lt;SPAN class=InlinedCode_Keyword&gt;class&lt;/SPAN&gt;&lt;SPAN class=InlinedCode_Class&gt; Nested&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN class=InlinedCode_Code&gt;&amp;nbsp; &amp;nbsp; {&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN class=InlinedCode_Keyword&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; void&lt;/SPAN&gt;&lt;SPAN class=InlinedCode_Code&gt; &lt;/SPAN&gt;&lt;SPAN class=InlinedCode_Identifier&gt;M1Nested&lt;/SPAN&gt;&lt;SPAN class=InlinedCode_Code&gt;() { }&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN class=InlinedCode_Code&gt;&amp;nbsp; &amp;nbsp; }&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN class=InlinedCode_Keyword&gt;&amp;nbsp; &amp;nbsp; &lt;BR&gt;&amp;nbsp; &amp;nbsp; public&lt;/SPAN&gt;&lt;SPAN class=InlinedCode_Code&gt; &lt;/SPAN&gt;&lt;SPAN class=InlinedCode_Keyword&gt;static&lt;/SPAN&gt;&lt;SPAN class=InlinedCode_Code&gt; &lt;/SPAN&gt;&lt;SPAN class=InlinedCode_Keyword&gt;void&lt;/SPAN&gt;&lt;SPAN class=InlinedCode_Code&gt; &lt;/SPAN&gt;&lt;SPAN class=InlinedCode_Identifier&gt;M1Derived&lt;/SPAN&gt;&lt;SPAN class=InlinedCode_Operator&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class=InlinedCode_Identifier&gt;W&lt;/SPAN&gt;&lt;SPAN class=InlinedCode_Operator&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN class=InlinedCode_Code&gt;() { }&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN class=InlinedCode_Code&gt;}&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN class=InlinedCode_Keyword&gt;&lt;BR&gt;public&lt;/SPAN&gt;&lt;SPAN class=InlinedCode_Code&gt; &lt;/SPAN&gt;&lt;SPAN class=InlinedCode_Keyword&gt;class&lt;/SPAN&gt;&lt;SPAN class=InlinedCode_Class&gt; G&lt;/SPAN&gt;&lt;SPAN class=InlinedCode_Operator&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class=InlinedCode_Identifier&gt;T&lt;/SPAN&gt;&lt;SPAN class=InlinedCode_Operator&gt;&amp;gt; &lt;/SPAN&gt;&lt;SPAN class=InlinedCode_Code&gt;{ }&lt;/SPAN&gt; &lt;SPAN class=InlinedCode_Comment&gt;&lt;BR&gt;&lt;BR&gt;/*&lt;BR&gt;Type: Derived&amp;lt;V&amp;gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; IsGenericType: True&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; IsGenericTypeDefinition: True&lt;BR&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; ContainsGenericParameters: True&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; IsGenericParameter: False&lt;BR&gt;&lt;BR&gt;Type: Base&amp;lt;string, V&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; IsGenericType: True&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;IsGenericTypeDefinition: False&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;ContainsGenericParameters: True&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; IsGenericParameter: False&lt;BR&gt;&lt;BR&gt;Type: Array of Derived&amp;lt;int&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; IsGenericType: False&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;IsGenericTypeDefinition: False&lt;BR&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; ContainsGenericParameters: False&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; IsGenericParameter: False&lt;BR&gt;&lt;BR&gt;Type: Type parameter T in Base&amp;lt;T&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; IsGenericType: False&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; IsGenericTypeDefinition: False&lt;BR&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; ContainsGenericParameters: True&lt;BR&gt;IsGenericParameter: True&lt;BR&gt;&lt;BR&gt;Type: Field Derived&amp;lt;V&amp;gt;.F&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; IsGenericType: True&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; IsGenericTypeDefinition: False&lt;BR&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; ContainsGenericParameters: True&lt;BR&gt;IsGenericParameter: False&lt;BR&gt;&lt;BR&gt;Type: Nested&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; IsGenericType: True&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; IsGenericTypeDefinition: True&lt;BR&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; ContainsGenericParameters: True&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; IsGenericParameter: False&lt;BR&gt;&lt;BR&gt;Method: T Base&amp;lt;T, U&amp;gt;.M1Base(U u)&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; IsGenericMethod: False&lt;BR&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; IsGenericMethodDefinition: False&lt;BR&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; ContainsGenericParameters: True&lt;BR&gt;&lt;BR&gt;Method: void Derived&amp;lt;V&amp;gt;.M1Derived&amp;lt;W&amp;gt;()&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; IsGenericMethod: True&lt;BR&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; IsGenericMethodDefinition: True&lt;BR&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; ContainsGenericParameters: True&lt;BR&gt;&lt;BR&gt;Method: void Derived&amp;lt;V&amp;gt;.M1Derived&amp;lt;int&amp;gt;();&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; IsGenericMethod: True&lt;BR&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; IsGenericMethodDefinition: False&lt;BR&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; ContainsGenericParameters: True&lt;BR&gt;&lt;BR&gt;Method: void Derived&amp;lt;string&amp;gt;.M1Derived&amp;lt;int&amp;gt;()&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; IsGenericMethod: True&lt;BR&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; IsGenericMethodDefinition: False&lt;BR&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; ContainsGenericParameters: False&lt;BR&gt;*/&lt;BR&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H3 style="MARGIN-BOTTOM: 0.3em"&gt;&lt;SPAN style="FONT-SIZE: 1.1em"&gt;Some of the System.Reflection API for Generics&lt;/SPAN&gt;&lt;/H3&gt;
&lt;UL class=IndentedListLevel0 style="MARGIN-TOP: 0.3em"&gt;
&lt;LI class=IndentedListLevel0Item&gt;System.Type.*Generic* members: 
&lt;UL class=IndentedListLevel0&gt;
&lt;LI class=IndentedListLevel0Item&gt;[P] ContainsGenericParameters: True if the type is an &lt;EM&gt;Open Constructed Generic Type&lt;/EM&gt;. False otherwise.&amp;nbsp; 
&lt;LI class=IndentedListLevel0Item&gt;[P] GenericParameterAttributes: Gets a combination of System.Reflection.GenericParameterAttributes flags that describe the covariance and special &lt;EM&gt;Constraints&lt;/EM&gt; of a &lt;EM&gt;Generic Type Parameter&lt;/EM&gt; 
&lt;LI class=IndentedListLevel0Item&gt;[P] GenericParameterPosition: Gets the position of the &lt;EM&gt;Generic Type Parameter&lt;/EM&gt; in the &lt;EM&gt;Generic Type Parameter&lt;/EM&gt; list of the &lt;EM&gt;Generic Type/Method&lt;/EM&gt; that declared the parameter.&amp;nbsp; 
&lt;LI class=IndentedListLevel0Item&gt;[P] IsGenericParameter: True if the type represents a &lt;EM&gt;Generic Type Parameter&lt;/EM&gt;. False otherwise.&amp;nbsp; 
&lt;LI class=IndentedListLevel0Item&gt;[P] IsGenericType: True if the type represents a &lt;EM&gt;Generic Type&lt;/EM&gt;. False otherwise.&amp;nbsp; 
&lt;LI class=IndentedListLevel0Item&gt;[P] IsGenericTypeDefinition: True if the type represents a &lt;EM&gt;Generic Type Definition&lt;/EM&gt;. False otherwise.&amp;nbsp; 
&lt;LI class=IndentedListLevel0Item&gt;[M] GetGenericArguments: Get the array of types representing &lt;EM&gt;Generic Type Parameter/Arguments&lt;/EM&gt; of the type. 
&lt;LI class=IndentedListLevel0Item&gt;[M] GetGenericParameterConstraints: Returns an array of System.Type objects that represent the &lt;EM&gt;Constraints&lt;/EM&gt; of a &lt;EM&gt;Generic Type&lt;/EM&gt;.&amp;nbsp; 
&lt;LI class=IndentedListLevel0Item&gt;[M] GetGenericTypeDefinition: Gets the &lt;EM&gt;Generic Type Definition&lt;/EM&gt; corresponding to the &lt;EM&gt;Generic Type&lt;/EM&gt;. 
&lt;LI class=IndentedListLevel0Item&gt;[M] MakeGenericType: Construct &lt;EM&gt;Closed/Open Constructed Generic Type&lt;/EM&gt; from the &lt;EM&gt;Generic Type Definition&lt;/EM&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;LI class=IndentedListLevel0Item&gt;System.Reflection.MethodInfo.*Generic* members: 
&lt;UL class=IndentedListLevel0&gt;
&lt;LI class=IndentedListLevel0Item&gt;[P] ContainsGenericParameters: True if the type is an &lt;EM&gt;Open Constructed Generic Method&lt;/EM&gt;. False otherwise. 
&lt;LI class=IndentedListLevel0Item&gt;[P] IsGenericMethod: True if the MethodInfo represents a &lt;EM&gt;Generic Method&lt;/EM&gt;. False otherwise. &amp;nbsp; 
&lt;LI class=IndentedListLevel0Item&gt;[P] IsGenericMethodDefinition: True if the MethodInfo represents a &lt;EM&gt;Generic Method Definition&lt;/EM&gt;. False otherwise. &amp;nbsp; 
&lt;LI class=IndentedListLevel0Item&gt;[M] GetGenericArguments: Get the array of types representing &lt;EM&gt;Generic Type Parameter/Arguments&lt;/EM&gt; of the MethodInfo 
&lt;LI class=IndentedListLevel0Item&gt;[M] GetGenericMethodDefinition: Gets the &lt;EM&gt;Generic Method Definition&lt;/EM&gt; corresponding to the &lt;EM&gt;Generic Method&lt;/EM&gt; 
&lt;LI class=IndentedListLevel0Item&gt;[M] MakeGenericMethod: Construct &lt;EM&gt;Closed/Open Constructed Generic Method&lt;/EM&gt; from the &lt;EM&gt;Generic Method Definition&lt;/EM&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;H3 style="MARGIN-BOTTOM: 0.3em"&gt;&lt;SPAN style="FONT-SIZE: 1.1em"&gt;References&lt;/SPAN&gt;&lt;/H3&gt;
&lt;P style="MARGIN-BOTTOM: 0.3em"&gt;If you want to learn more about Reflection &amp;amp; Generics in .NET Framework here are some references: &lt;/P&gt;
&lt;UL class=IndentedListLevel0 style="MARGIN-TOP: 0.3em"&gt;
&lt;LI class=IndentedListLevel0Item&gt;&lt;A href="http://msdn2.microsoft.com/en-us/library/ms172193"&gt;Overview of Generics in the .NET Framework&lt;/A&gt; clears up basic terminology 
&lt;LI class=IndentedListLevel0Item&gt;&lt;A href="http://msdn2.microsoft.com/en-us/library/ms172334"&gt;Overview of Reflection and Generics&lt;/A&gt; explains the how to analyze generics usign SR &amp;amp; SRE APIs. 
&lt;LI class=IndentedListLevel0Item&gt;&lt;A href="http://msdn2.microsoft.com/en-us/library/system.type.isgenerictype"&gt;Type.IsGenericType Property&lt;/A&gt; &amp;amp; &lt;A href="http://msdn2.microsoft.com/en-us/library/system.reflection.methodinfo.isgenericmethod"&gt;MethodInfo.IsGenericMethod Property&lt;/A&gt; describes and has examples of various combinations 
&lt;LI class=IndentedListLevel0Item&gt;&lt;A href="http://msdn2.microsoft.com/en-us/library/b8ytshk6"&gt;How to: Examine and Instantiate Generic Types with Reflection&lt;/A&gt; provides some walkthroughs for using SR &amp;amp; SRE for &lt;EM&gt;Generic Types/Methods &lt;/EM&gt;
&lt;LI class=IndentedListLevel0Item&gt;&lt;EM&gt;&lt;/EM&gt;&lt;A href="http://msdn2.microsoft.com/en-us/library/4xxf1410"&gt;How to: Define a Generic Type with Reflection Emit&lt;/A&gt; gives examples on how to emit generic types using SRE. &lt;/LI&gt;&lt;/UL&gt;
&lt;H3 style="MARGIN-BOTTOM: 0.3em"&gt;&lt;SPAN style="FONT-SIZE: 1.1em"&gt;&lt;STRONG&gt;Finally as an exercise&lt;/STRONG&gt;: &lt;/SPAN&gt;&lt;/H3&gt;
&lt;P&gt;&lt;A href="http://msdn2.microsoft.com/en-us/library/ms131514"&gt;Type.IsGenericType Property&lt;/A&gt; help page contains an error in the Example-Invariants table. Armed with the above knowledge find it out and let me know! :)&lt;/P&gt;
&lt;P&gt;That's all for now... See you in my next post!&lt;/P&gt;&lt;/DIV&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=483463" width="1" height="1"&gt;</content><author><name>parthopdas</name><uri>http://blogs.msdn.com/members/parthopdas.aspx</uri></author><category term="Visual Studio For Devices" scheme="http://blogs.msdn.com/parthopdas/archive/tags/Visual+Studio+For+Devices/default.aspx" /></entry><entry><title>.NET Framework Designtime – I: An Introduction...</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/parthopdas/archive/2005/10/10/479085.aspx" /><id>http://blogs.msdn.com/parthopdas/archive/2005/10/10/479085.aspx</id><published>2005-10-10T14:07:00Z</published><updated>2005-10-10T14:07:00Z</updated><content type="html">Hi Folks... For a while now, I have been studying the .NET Framework Designtime Infrastructure. Not only because I now own the VSD WinForms and Data designers. But also because the design &amp;amp; architecture of this piece is quiet fascinating… What is the .NET Framework Designtime Infrastructure.? It is the guts of the Visual Studio designer that lets you rapidly design and build rich Windows Forms UI. In this series, I will dump my understanding of the .NET Framework Designtime. We will also progressively...(&lt;a href="http://blogs.msdn.com/parthopdas/archive/2005/10/10/479085.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=479085" width="1" height="1"&gt;</content><author><name>parthopdas</name><uri>http://blogs.msdn.com/members/parthopdas.aspx</uri></author><category term="Designer Architecture" scheme="http://blogs.msdn.com/parthopdas/archive/tags/Designer+Architecture/default.aspx" /></entry><entry><title>Object Test Bench – IV: Please send us your feedback and vNext wish list...</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/parthopdas/archive/2005/10/06/477692.aspx" /><id>http://blogs.msdn.com/parthopdas/archive/2005/10/06/477692.aspx</id><published>2005-10-06T10:50:00Z</published><updated>2005-10-06T10:50:00Z</updated><content type="html">Requesting feedback on Object Test Bench from the community......(&lt;a href="http://blogs.msdn.com/parthopdas/archive/2005/10/06/477692.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=477692" width="1" height="1"&gt;</content><author><name>parthopdas</name><uri>http://blogs.msdn.com/members/parthopdas.aspx</uri></author><category term="Object Test Bench" scheme="http://blogs.msdn.com/parthopdas/archive/tags/Object+Test+Bench/default.aspx" /></entry><entry><title>Object Test Bench – III: Exploring Framework APIs...</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/parthopdas/archive/2005/05/08/415485.aspx" /><id>http://blogs.msdn.com/parthopdas/archive/2005/05/08/415485.aspx</id><published>2005-05-08T15:18:00Z</published><updated>2005-05-08T15:18:00Z</updated><content type="html">Exploring Framework APIs......(&lt;a href="http://blogs.msdn.com/parthopdas/archive/2005/05/08/415485.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=415485" width="1" height="1"&gt;</content><author><name>parthopdas</name><uri>http://blogs.msdn.com/members/parthopdas.aspx</uri></author><category term="Object Test Bench" scheme="http://blogs.msdn.com/parthopdas/archive/tags/Object+Test+Bench/default.aspx" /></entry><entry><title>Object Test Bench – II: A User’s Manual…</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/parthopdas/archive/2005/05/04/414704.aspx" /><id>http://blogs.msdn.com/parthopdas/archive/2005/05/04/414704.aspx</id><published>2005-05-04T23:14:00Z</published><updated>2005-05-04T23:14:00Z</updated><content type="html">Object Test Bench – II: A User’s Manual…...(&lt;a href="http://blogs.msdn.com/parthopdas/archive/2005/05/04/414704.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=414704" width="1" height="1"&gt;</content><author><name>parthopdas</name><uri>http://blogs.msdn.com/members/parthopdas.aspx</uri></author><category term="Object Test Bench" scheme="http://blogs.msdn.com/parthopdas/archive/tags/Object+Test+Bench/default.aspx" /></entry><entry><title>Visual J# on MSDN TV</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/parthopdas/archive/2005/04/11/407475.aspx" /><id>http://blogs.msdn.com/parthopdas/archive/2005/04/11/407475.aspx</id><published>2005-04-12T08:52:00Z</published><updated>2005-04-12T08:52:00Z</updated><content type="html">Pratap Lakshman introduces various enhancements to Visual J# 2005 and discusses themes such as, providing language level support for common programming idioms, making it easier to write better and correct code, and enabling new scenarios through enhanced security and integration....(&lt;a href="http://blogs.msdn.com/parthopdas/archive/2005/04/11/407475.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=407475" width="1" height="1"&gt;</content><author><name>parthopdas</name><uri>http://blogs.msdn.com/members/parthopdas.aspx</uri></author><category term="Visual J#" scheme="http://blogs.msdn.com/parthopdas/archive/tags/Visual+J_2300_/default.aspx" /></entry><entry><title>Object Test Bench – I: Debugging unplugged!!!</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/parthopdas/archive/2005/02/09/369659.aspx" /><id>http://blogs.msdn.com/parthopdas/archive/2005/02/09/369659.aspx</id><published>2005-02-09T20:34:00Z</published><updated>2005-02-09T20:34:00Z</updated><content type="html">&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Tahoma"&gt;Hi folks… &lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Tahoma"&gt;&lt;o:p&gt;&lt;font size="1"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Tahoma"&gt;As you may have seen from the various blogs and articles floating around on the internet, Visual Studio 2005 will ship with a new feature called the Object Test Bench (OTB, here after). My super cool test lead, Gopinath, suggested that I should give you guys a tour of this feature so you can start working on it as soon as Beta 2 hits the stands! So – here I am, doing just that. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Tahoma"&gt;&lt;o:p&gt;&lt;font size="3"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;h3 style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="COLOR: navy; FONT-FAMILY: Tahoma"&gt;What is OTB?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/h3&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;font size="1"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Tahoma"&gt;OTB is a rich GUI front end to the VS Debugger in design mode. It provides a graphical visualization &lt;/span&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;sup&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: Tahoma"&gt;(1) &lt;/span&gt;&lt;/sup&gt;&lt;/b&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Tahoma"&gt;of the objects created at design time from within the IDE and the GUI to interact with these objects. It also provides a GUI to interact with the classes in the Class View (CV, here after) &amp;amp; &lt;/span&gt;&lt;u&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Tahoma"&gt;&lt;A href="http://blogs.msdn.com/r.ramesh/"&gt;&lt;font color="#0000ff"&gt;Class Designer&lt;/font&gt;&lt;/a&gt;&lt;/span&gt;&lt;/u&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Tahoma"&gt; (CD, here after).&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Tahoma"&gt;&lt;o:p&gt;&lt;font size="1"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Tahoma"&gt;OTB was designed with the following in mind, which make it pretty interesting:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.25in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1; tab-stops: list .25in"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Tahoma; mso-fareast-font-family: Tahoma"&gt;&lt;span style="mso-list: Ignore"&gt;1.&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Tahoma"&gt;Design time debugging&lt;/span&gt;&lt;/b&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Tahoma"&gt; (?!?): Users create and interact with objects at design time and *without* having to write driver code and/or starting a debugging session. These objects are instances of either the classes the users has just written or the classes from the referenced assemblies.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.25in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1; tab-stops: list .25in"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Tahoma; mso-fareast-font-family: Tahoma"&gt;&lt;span style="mso-list: Ignore"&gt;2.&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Tahoma"&gt;It provides rich GUI&lt;/span&gt;&lt;/b&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Tahoma"&gt;: Users are guided by a rich wizard type GUI in all their tasks viz. instantiating class, calling methods, inspecting objects, and a lot of other activities.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.25in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1; tab-stops: list .25in"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Tahoma; mso-fareast-font-family: Tahoma"&gt;&lt;span style="mso-list: Ignore"&gt;3.&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Tahoma"&gt;It is language agnostic&lt;/span&gt;&lt;/b&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Tahoma"&gt;: OTB respects the user’s individuality (&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Wingdings; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-family: Tahoma; mso-char-type: symbol; mso-symbol-font-family: Wingdings"&gt;&lt;span style="mso-char-type: symbol; mso-symbol-font-family: Wingdings"&gt;J&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Tahoma"&gt;, in terms of choice of coding language) by performing its tasks, irrespective of whether it is a J#, C# or VB project – yup, OTB Beta 2 supports VB! &lt;/span&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;sup&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: Tahoma"&gt;(2)&lt;/span&gt;&lt;/sup&gt;&lt;/b&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Tahoma"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Tahoma"&gt;&lt;o:p&gt;&lt;font size="3"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;h3 style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="COLOR: navy; FONT-FAMILY: Tahoma"&gt;Who/what is OTB meant for?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/h3&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;font size="1"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Tahoma"&gt;OTB is intended to simplify the debugging &amp;amp; testing the functionality of classes &amp;amp; their methods within a VS project or any of its references. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Tahoma"&gt;&lt;o:p&gt;&lt;font size="1"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Tahoma"&gt;In other words, it could be used to shorten the design-code-debug loop for almost all classes &amp;amp; their methods you write. E.g. say you are writing a class library that provides utility classes/methods – you could use OTB to quickly test your code. The alternative is to create a console application as a driver for your code and then step through the driver application as it calls your code.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Tahoma"&gt;&lt;o:p&gt;&lt;font size="1"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Tahoma"&gt;A corollary to the above is that OTB helps you to explore the functionality provided by the classes in a 3&lt;sup&gt;rd&lt;/sup&gt; party or .NET FX assembly. E.g. say you were banging your head on the wall with a question like:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Tahoma"&gt;&lt;o:p&gt;&lt;font size="1"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0.5in"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: Tahoma"&gt;Umm… What was that function again? The one in &lt;/span&gt;&lt;em&gt;&lt;b&gt;&lt;span style="FONT-SIZE: 8pt; COLOR: teal; FONT-FAMILY: 'Lucida Sans Typewriter'; mso-no-proof: yes"&gt;System&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="FONT-SIZE: 8pt; COLOR: maroon; FONT-FAMILY: 'Lucida Sans Typewriter'; mso-no-proof: yes"&gt;.&lt;/span&gt;&lt;span style="FONT-SIZE: 8pt; COLOR: navy; FONT-FAMILY: 'Lucida Sans Typewriter'; mso-no-proof: yes"&gt;Environment&lt;/span&gt;&lt;/b&gt;&lt;/em&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: Tahoma"&gt; that returned all the process environment variables in the current process? What exactly does it return?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0.5in"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: Tahoma"&gt;&lt;o:p&gt;&lt;font size="1"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Tahoma"&gt;Well with OTB around, the good news is you don’t have to create a console application and write code to call &lt;/span&gt;&lt;b&gt;&lt;i&gt;&lt;span style="FONT-SIZE: 8pt; COLOR: teal; FONT-FAMILY: 'Lucida Sans Typewriter'; mso-no-proof: yes"&gt;System&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;b&gt;&lt;i&gt;&lt;span style="FONT-SIZE: 8pt; COLOR: purple; FONT-FAMILY: 'Lucida Sans Typewriter'; mso-no-proof: yes"&gt;.&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;i&gt;&lt;span style="FONT-SIZE: 8pt; COLOR: navy; FONT-FAMILY: 'Lucida Sans Typewriter'; mso-no-proof: yes"&gt;Environment&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;b&gt;&lt;i&gt;&lt;span style="FONT-SIZE: 8pt; COLOR: purple; FONT-FAMILY: 'Lucida Sans Typewriter'; mso-no-proof: yes"&gt;.&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;b&gt;&lt;i&gt;&lt;span style="FONT-SIZE: 8pt; COLOR: teal; FONT-FAMILY: 'Lucida Sans Typewriter'; mso-no-proof: yes"&gt;GetEnvironmentVariables&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Tahoma"&gt;, store its return value in a &lt;/span&gt;&lt;b&gt;&lt;i&gt;&lt;span style="FONT-SIZE: 8pt; COLOR: teal; FONT-FAMILY: 'Lucida Sans Typewriter'; mso-no-proof: yes"&gt;System&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;b&gt;&lt;i&gt;&lt;span style="FONT-SIZE: 8pt; COLOR: purple; FONT-FAMILY: 'Lucida Sans Typewriter'; mso-no-proof: yes"&gt;.&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;b&gt;&lt;i&gt;&lt;span style="FONT-SIZE: 8pt; COLOR: teal; FONT-FAMILY: 'Lucida Sans Typewriter'; mso-no-proof: yes"&gt;Collections&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;b&gt;&lt;i&gt;&lt;span style="FONT-SIZE: 8pt; COLOR: purple; FONT-FAMILY: 'Lucida Sans Typewriter'; mso-no-proof: yes"&gt;.&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;i&gt;&lt;span style="FONT-SIZE: 8pt; COLOR: navy; FONT-FAMILY: 'Lucida Sans Typewriter'; mso-no-proof: yes"&gt;IDictionary&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Tahoma"&gt; reference and then step through the driver application to examine the return value. Using OTB all you have to do is create the bare bones &lt;a href="http://msdn.microsoft.com/library/en-us/dv_vstechart/html/vs2004_intro.asp?frame=true#vs2004_intro_topic10"&gt;&lt;font color="#0000ff"&gt;zero impact&lt;/font&gt;&lt;/a&gt; J# console application, navigate to &lt;/span&gt;&lt;b&gt;&lt;i&gt;&lt;span style="FONT-SIZE: 8pt; COLOR: teal; FONT-FAMILY: 'Lucida Sans Typewriter'; mso-no-proof: yes"&gt;System&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;b&gt;&lt;i&gt;&lt;span style="FONT-SIZE: 8pt; COLOR: purple; FONT-FAMILY: 'Lucida Sans Typewriter'; mso-no-proof: yes"&gt;.&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;i&gt;&lt;span style="FONT-SIZE: 8pt; COLOR: navy; FONT-FAMILY: 'Lucida Sans Typewriter'; mso-no-proof: yes"&gt;Environment&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Tahoma"&gt; in the CV and invoke the &lt;/span&gt;&lt;b&gt;&lt;i&gt;&lt;span style="FONT-SIZE: 8pt; COLOR: teal; FONT-FAMILY: 'Lucida Sans Typewriter'; mso-no-proof: yes"&gt;System&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;b&gt;&lt;i&gt;&lt;span style="FONT-SIZE: 8pt; COLOR: purple; FONT-FAMILY: 'Lucida Sans Typewriter'; mso-no-proof: yes"&gt;.&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;i&gt;&lt;span style="FONT-SIZE: 8pt; COLOR: navy; FONT-FAMILY: 'Lucida Sans Typewriter'; mso-no-proof: yes"&gt;Environment&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;b&gt;&lt;i&gt;&lt;span style="FONT-SIZE: 8pt; COLOR: purple; FONT-FAMILY: 'Lucida Sans Typewriter'; mso-no-proof: yes"&gt;.&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;b&gt;&lt;i&gt;&lt;span style="FONT-SIZE: 8pt; COLOR: teal; FONT-FAMILY: 'Lucida Sans Typewriter'; mso-no-proof: yes"&gt;GetEnvironmentVariables&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Tahoma"&gt; method using a GUI and save the return value on the test bench. Once the return value is in the test bench, you can simply use the &lt;A href="http://blogs.msdn.com/jimgries/archive/2004/06/07/150430.aspx"&gt;&lt;font color="#0000ff"&gt;Enhanced Debugger Datatips&lt;/font&gt;&lt;/a&gt; to do pretty much anything you want with it.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Tahoma"&gt;&lt;o:p&gt;&lt;font size="1"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Tahoma"&gt;While on the subject of survey and exploration, I have to confess that I have myself used the OTB at times to quickly verify whether some of OTB’s internal classes were indeed working the way I wanted them to.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Tahoma"&gt;&lt;o:p&gt;&lt;font size="1"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Tahoma"&gt;Another thing to note is that OTB with its rich GUI and its language agnostic behavior along with the CD will probably attract the new timers &lt;/span&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;sup&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: Tahoma"&gt;(3)&lt;/span&gt;&lt;/sup&gt;&lt;/b&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Tahoma"&gt;, who are comfortable with GUIs and all but not so comfortable with debugging yet. They are trying to build a strong foundation in Computer Science by first learning the basics of OOP amongst other concepts. They should not have to delve deep into language syntax/semantics and other language idiosyncrasies. I mean, from within a class, why would a beginner care how to call the instance methods? He doesn’t need to know that you have to do a &lt;/span&gt;&lt;span style="FONT-SIZE: 8pt; COLOR: blue; FONT-FAMILY: 'Lucida Sans Typewriter'; mso-no-proof: yes"&gt;this&lt;/span&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: 'Lucida Sans Typewriter'; mso-no-proof: yes"&gt;.GetType()&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Tahoma"&gt; in J# or &lt;/span&gt;&lt;span style="FONT-SIZE: 8pt; COLOR: blue; FONT-FAMILY: 'Lucida Sans Typewriter'; mso-no-proof: yes"&gt;me&lt;/span&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: 'Lucida Sans Typewriter'; mso-no-proof: yes"&gt;.GetType()&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Tahoma"&gt; in VB, well not just yet, at least!&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Tahoma"&gt;&lt;o:p&gt;&lt;font size="1"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Tahoma"&gt;Hmm… OK, enough ranting for a day! Let’s proceed! &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Wingdings; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-family: Tahoma; mso-char-type: symbol; mso-symbol-font-family: Wingdings"&gt;&lt;span style="mso-char-type: symbol; mso-symbol-font-family: Wingdings"&gt;J&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Tahoma"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Tahoma"&gt;&lt;o:p&gt;&lt;font size="3"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;h3 style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="COLOR: navy; FONT-FAMILY: Tahoma"&gt;Who/what is OTB *not* meant for?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/h3&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;font size="1"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Tahoma"&gt;OTB is designed/developed to provide a tool for the academia to help teachers/students for teaching/learning various concepts of software engineering. A hobbyist developer can also use it to explore the various 3&lt;sup&gt;rd&lt;/sup&gt; party class libraries written for .NET FX. Although, theoretically anyone can use it during development and testing of complex software projects, OTB, depending on the code will probably not scale up adequately for large projects! &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Tahoma"&gt;&lt;o:p&gt;&lt;font size="1"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Tahoma"&gt;Specifically OTB is an unlikely tool:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.25in; TEXT-INDENT: -0.25in; mso-list: l1 level1 lfo2; tab-stops: list .25in"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Tahoma; mso-fareast-font-family: Tahoma"&gt;&lt;span style="mso-list: Ignore"&gt;1.&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Tahoma"&gt;For folks involved in large/complex or distributed projects.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.25in; TEXT-INDENT: -0.25in; mso-list: l1 level1 lfo2; tab-stops: list .25in"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Tahoma; mso-fareast-font-family: Tahoma"&gt;&lt;span style="mso-list: Ignore"&gt;2.&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Tahoma"&gt;For doing unit testing on a given piece of code.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.25in; TEXT-INDENT: -0.25in; mso-list: l1 level1 lfo2; tab-stops: list .25in"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Tahoma; mso-fareast-font-family: Tahoma"&gt;&lt;span style="mso-list: Ignore"&gt;3.&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Tahoma"&gt;For extending/automating via DTE and other automation interfaces.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.25in; TEXT-INDENT: -0.25in; mso-list: l1 level1 lfo2; tab-stops: list .25in"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Tahoma; mso-fareast-font-family: Tahoma"&gt;&lt;span style="mso-list: Ignore"&gt;4.&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Tahoma"&gt;For Just-in-Time or post mortem debugging.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.25in; TEXT-INDENT: -0.25in; mso-list: l1 level1 lfo2; tab-stops: list .25in"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Tahoma; mso-fareast-font-family: Tahoma"&gt;&lt;span style="mso-list: Ignore"&gt;5.&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Tahoma"&gt;To be used in the break/run modes of the Visual Studio 2005 IDE.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Tahoma"&gt;&lt;o:p&gt;&lt;font size="3"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;h3 style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="COLOR: navy; FONT-FAMILY: Tahoma"&gt;Where/how/when is OTB available?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/h3&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;font size="1"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Tahoma"&gt;Here is a conversation we might just have at this point of time:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Tahoma"&gt;&lt;o:p&gt;&lt;font size="1"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Tahoma"&gt;Me:&lt;/span&gt;&lt;/b&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Tahoma"&gt; You have done well, going through this huge pile of blog. And now I sense that you wish to continue your search for young OTB.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: Tahoma"&gt;You:&lt;/span&gt;&lt;/b&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: Tahoma"&gt; Yes, my master! &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Tahoma"&gt;Me:&lt;/span&gt;&lt;/b&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Tahoma"&gt; Patience, my friend, in time he will seek you out and when he does, you must bring him before me. He has grown strong. Only together can we turn him to the unplugged side of debugging.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: Tahoma"&gt;You:&lt;/span&gt;&lt;/b&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: Tahoma"&gt; As you wish, my master! &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Tahoma"&gt;Me:&lt;/span&gt;&lt;/b&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Tahoma"&gt; Everything is proceeding as I have foreseen.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Tahoma"&gt;Me:&lt;/span&gt;&lt;/b&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Tahoma"&gt; &lt;/span&gt;&lt;span style="FONT-SIZE: 8pt; COLOR: blue; FONT-FAMILY: 'Lucida Sans Typewriter'; mso-no-proof: yes"&gt;&amp;lt;&lt;/span&gt;&lt;span style="FONT-SIZE: 8pt; COLOR: maroon; FONT-FAMILY: 'Lucida Sans Typewriter'; mso-no-proof: yes"&gt;laugh&lt;/span&gt;&lt;span style="FONT-SIZE: 8pt; COLOR: blue; FONT-FAMILY: 'Lucida Sans Typewriter'; mso-no-proof: yes"&gt; &lt;/span&gt;&lt;span style="FONT-SIZE: 8pt; COLOR: red; FONT-FAMILY: 'Lucida Sans Typewriter'; mso-no-proof: yes"&gt;type&lt;/span&gt;&lt;span style="FONT-SIZE: 8pt; COLOR: blue; FONT-FAMILY: 'Lucida Sans Typewriter'; mso-no-proof: yes"&gt;=&lt;/span&gt;&lt;span style="FONT-SIZE: 8pt; FONT-FAMILY: 'Lucida Sans Typewriter'; mso-no-proof: yes"&gt;"&lt;span style="COLOR: blue"&gt;evil&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;eh eh eh he he&lt;span style="COLOR: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: maroon"&gt;laugh&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: Tahoma"&gt;&lt;o:p&gt;&lt;font size="1"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Tahoma"&gt;Well the good news is that you can play with this Visual Studio 2005 Beta 2. As always, if you need more information you can &lt;A href="http://blogs.msdn.com/parthopdas/contact.aspx"&gt;&lt;font color="#0000ff"&gt;contact me&lt;/font&gt;&lt;/a&gt; and I will put you through to someone who can answers your questions.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Tahoma"&gt;&lt;o:p&gt;&lt;font size="3"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;h3 style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="COLOR: navy; FONT-FAMILY: Tahoma"&gt;And finally…&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/h3&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;font size="1"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Tahoma"&gt;In my next set of blogs, I will walk you through the OTB functionality. Basically what you can do and how! I will also present a few use cases that illustrate how OTB can be used. These won’t be the canonical cat.Meow()/dog.Bark() type examples, but something more realistic.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Tahoma"&gt;&lt;o:p&gt;&lt;font size="1"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Tahoma"&gt;Finally the ever so clichéd: Hope you enjoy working with OTB as much as we have enjoyed designing/developing/testing it for you! &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Tahoma"&gt;&lt;o:p&gt;&lt;font size="1"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Tahoma"&gt;Please note that my blogs aren’t the official documentation on OTB or any other feature or component that write about – if you do see any discrepancy between my blogs and the product – then it is me goofing up big time! You are most welcome to &lt;A href="http://blogs.msdn.com/parthopdas/contact.aspx"&gt;&lt;font color="#0000ff"&gt;contact me&lt;/font&gt;&lt;/a&gt; to get things clarified. Please also refer to the disclaimer on the left.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Tahoma"&gt;&lt;o:p&gt;&lt;font size="1"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Tahoma"&gt;Here is the official OTB documentation on &lt;a href="http://whidbey.msdn.microsoft.com/library/en-us/dv_objtstbnch/html/27370d43-efd0-48ad-aad6-eaab1cb077a2.asp"&gt;&lt;font color="#0000ff"&gt;MSDN&lt;/font&gt;&lt;/a&gt;. This is based on the Beta 1 bits. So you will have to wait a while for the Beta 2 docs to appear at this link.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Tahoma"&gt;&lt;o:p&gt;&lt;font size="3"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: right" align="right"&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Tahoma"&gt;(To be continued…)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Tahoma"&gt;&lt;o:p&gt;&lt;font size="3"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Tahoma"&gt;Notes:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.25in; TEXT-INDENT: -0.25in; mso-list: l2 level1 lfo3; tab-stops: list .25in"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Tahoma; mso-fareast-font-family: Tahoma"&gt;&lt;span style="mso-list: Ignore"&gt;1.&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;sup&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: Tahoma"&gt;(1) &lt;/span&gt;&lt;/sup&gt;&lt;/b&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Tahoma"&gt;Not to be confused with &lt;A href="http://blogs.msdn.com/scottno/archive/2004/04/17/115328.aspx"&gt;&lt;font color="#0000ff"&gt;Debugger Visualizers&lt;/font&gt;&lt;/a&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.25in; TEXT-INDENT: -0.25in; mso-list: l2 level1 lfo3; tab-stops: list .25in"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Tahoma; mso-fareast-font-family: Tahoma"&gt;&lt;span style="mso-list: Ignore"&gt;2.&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;sup&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: Tahoma"&gt;(2) &lt;/span&gt;&lt;/sup&gt;&lt;/b&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Tahoma"&gt;Party time for Elvis and Mort! Einstein will probably have to wait for v2! Sorry about that! :) &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.25in; TEXT-INDENT: -0.25in; mso-list: l2 level1 lfo3; tab-stops: list .25in"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Tahoma; mso-fareast-font-family: Tahoma"&gt;&lt;span style="mso-list: Ignore"&gt;3.&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;sup&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: Tahoma"&gt;(3) &lt;/span&gt;&lt;/sup&gt;&lt;/b&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Tahoma"&gt;I was a new-timer w.r.t. computer programming in my 10&lt;sup&gt;th&lt;/sup&gt; grade… Nowadays, the new timers are from what? The 2&lt;sup&gt;nd&lt;/sup&gt; grade? 3&lt;sup&gt;rd&lt;/sup&gt;? 4&lt;sup&gt;th&lt;/sup&gt;? Ummm… I don’t know…&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Tahoma"&gt;&lt;o:p&gt;&lt;font size="3"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=369659" width="1" height="1"&gt;</content><author><name>parthopdas</name><uri>http://blogs.msdn.com/members/parthopdas.aspx</uri></author><category term="Object Test Bench" scheme="http://blogs.msdn.com/parthopdas/archive/tags/Object+Test+Bench/default.aspx" /></entry><entry><title>Some of the coolest articles on Visual J#...</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/parthopdas/archive/2005/02/05/367746.aspx" /><id>http://blogs.msdn.com/parthopdas/archive/2005/02/05/367746.aspx</id><published>2005-02-06T06:07:00Z</published><updated>2005-02-06T06:07:00Z</updated><content type="html">Hello everyone... The entire division has been really really busy over the last few weeks! We have just about begun the final phase of the Visual Studio 2005 Beta 2 release. And personally I haven’t much time for anything else – totally absolutely heads down on bug fixing! Well, what better job in the world that to write code, debug and fix bugs? And what better place in the world to work than in Microsoft Corporation? Visual J# rocks!!! Visual Studio rocks!!! Microsoft Corporation rocks!!! Anyways...(&lt;a href="http://blogs.msdn.com/parthopdas/archive/2005/02/05/367746.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=367746" width="1" height="1"&gt;</content><author><name>parthopdas</name><uri>http://blogs.msdn.com/members/parthopdas.aspx</uri></author><category term="Visual J#" scheme="http://blogs.msdn.com/parthopdas/archive/tags/Visual+J_2300_/default.aspx" /></entry><entry><title>Visual J#: What is it?</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/parthopdas/archive/2005/02/03/366419.aspx" /><id>http://blogs.msdn.com/parthopdas/archive/2005/02/03/366419.aspx</id><published>2005-02-04T07:10:00Z</published><updated>2005-02-04T07:10:00Z</updated><content type="html">&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Tahoma"&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Tahoma"&gt;Sometime back the following question came up on an internal discussion:&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Tahoma"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.25in"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: Tahoma"&gt;"How to call method written in x lanuage from C#.&amp;nbsp; In particular, I have several Java-language classes that I don't want to rewrite them in C#.&amp;nbsp; How can I call them from C#.&amp;nbsp; I understand that I can call a C/C++ dll from C# and load jvm within the c/c++ code.&amp;nbsp; But is there anything more efficient?"&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Tahoma"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Tahoma"&gt;The answer to this question pretty much explains why &lt;a href="http://msdn.microsoft.com/vjsharp/"&gt;&lt;font color="#0000ff"&gt;Visual J#&lt;/font&gt;&lt;/a&gt; exists. Here is what I replied to the above question:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Tahoma"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.25in; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: Tahoma"&gt;Apart from the load-jvm-and-execute option, you do have a few sleeker options:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.25in; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: Tahoma"&gt;&lt;o:p&gt;&lt;font size="1"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-layout-grid-align: none; mso-list: l0 level1 lfo1"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: Tahoma; mso-fareast-font-family: Tahoma"&gt;&lt;span style="mso-list: Ignore"&gt;1.&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: Tahoma"&gt;If you have compiled .class binaries only and you don’t have access to the Java-language sources, you can use JBImp.exe (part of .NET SDK) to convert the .class files to managed assemblies. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.25in; TEXT-INDENT: 0.25in; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: Tahoma"&gt;JBImp will convert all compiled code that meets &lt;a href="http://msdn.microsoft.com/vstudio/java/migrate/visualj/default.aspx"&gt;&lt;span style="COLOR: maroon"&gt;&lt;font color="#0000ff"&gt;certain conditions&lt;/font&gt;&lt;/span&gt;&lt;/a&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: Tahoma"&gt;Once you have managed assemblies – you can pretty much use it from any managed language – J#, C#, VB, MC++, etc.&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: Tahoma"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: Tahoma"&gt;&lt;o:p&gt;&lt;font size="1"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: Tahoma"&gt;2.&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;If you have access to the J++ project and associated Java-language sources and you want to continue coding in the same language, you should run your sources through the J++ to J# Upgrade Wizard (part the VS IDE).&amp;nbsp;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: Tahoma"&gt;This upgrade wizard will generate an upgrade report that lists all compatibility issues etc. and gives you suggestions/workarounds on how to modify them so that they can be compiled for the .NET platform.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: Tahoma"&gt;Once the upgrade wizard is done you will get J# code that can be compiled (with the modifications suggested in the upgrade report) into managed assemblies using the J# complier. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: Tahoma"&gt;(Note that if you do not have access to only the Java-language sources and not the J++ project, you may not be able to run J# Upgrade Wizard. Nevertheless you can simply compile the sources and as long as &lt;a href="http://msdn.microsoft.com/vstudio/java/migrate/visualj/default.aspx"&gt;&lt;span style="COLOR: maroon"&gt;&lt;font color="#0000ff"&gt;these conditions&lt;/font&gt;&lt;/span&gt;&lt;/a&gt; are met)&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: Tahoma"&gt;&lt;font size="1"&gt;&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.25in; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: Tahoma"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: Tahoma"&gt;3.&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;If you are keen on moving into .NET completely, C# should be your choice of language.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: Tahoma"&gt;In that case you will need to run your sources through the Java Language Conversion Assistant (part of VS IDE).&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: Tahoma"&gt;The JLCA will basically convert your Java-language sources to C# sources and C# compiler will do the rest for you. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: Tahoma"&gt;(Please see the foot note on JLCA)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.25in; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: Tahoma"&gt;&lt;o:p&gt;&lt;font size="1"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.25in; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: Tahoma"&gt;Having said that, J# is the solution for Java-language developers on .NET platform. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.25in; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: Tahoma"&gt;The Visual J# tool comes with its compiler, a Java binary importer (JBImp above) and complete java-language support subject to &lt;a href="http://msdn.microsoft.com/vstudio/java/migrate/visualj/default.aspx"&gt;&lt;span style="COLOR: maroon"&gt;&lt;font color="#0000ff"&gt;this&lt;/font&gt;&lt;/span&gt;&lt;/a&gt;. Visual J# is also integrated into the VS IDE – you create/manage projects (and migrate J++ projects), use a number RAD tools for a super coding experience, use a rich visual debugger, build deployment solutions, etc.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Tahoma"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Tahoma"&gt;For more information please visit the &lt;a href="http://msdn.microsoft.com/vjsharp/"&gt;&lt;font color="#0000ff"&gt;Visual J#&lt;/font&gt;&lt;/a&gt; home page. There you can get the latest information, articles, documentation, downloads, etc.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Tahoma"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Tahoma"&gt;In my next post I will talk about Visual J# 2005 features and which of those I work on.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Tahoma"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Tahoma"&gt;Please note&lt;/span&gt;&lt;/b&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Tahoma"&gt;:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.25in; TEXT-INDENT: -0.25in; mso-list: l1 level1 lfo2; tab-stops: list .25in"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Tahoma; mso-fareast-font-family: Tahoma"&gt;&lt;span style="mso-list: Ignore"&gt;1.&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Tahoma"&gt;&lt;a href="http://msdn.microsoft.com/vstudio/downloads/tools/jlca/"&gt;&lt;font color="#0000ff"&gt;JLCA&lt;/font&gt;&lt;/a&gt; is a very powerful tool and is shipped by a sister team of Visual J#, internally called the NetStep Team. &lt;A href="http://blogs.msdn.com/tbright/"&gt;&lt;font color="#0000ff"&gt;TBright&lt;/font&gt;&lt;/a&gt; is a Program Manager in that team.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.25in; TEXT-INDENT: -0.25in; mso-list: l1 level1 lfo2; tab-stops: list .25in"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Tahoma; mso-fareast-font-family: Tahoma"&gt;&lt;span style="mso-list: Ignore"&gt;2.&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Tahoma"&gt;Microsoft Visual J# .NET is not a tool for developing applications intended to run on a Java virtual machine. Applications and services built with Visual J# .NET will run only in the .NET Framework; they will not run on any Java virtual machine. Visual J# .NET has been independently developed by Microsoft. It is neither endorsed nor approved by Sun Microsystems, Inc.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Tahoma"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=366419" width="1" height="1"&gt;</content><author><name>parthopdas</name><uri>http://blogs.msdn.com/members/parthopdas.aspx</uri></author><category term="Visual J#" scheme="http://blogs.msdn.com/parthopdas/archive/tags/Visual+J_2300_/default.aspx" /></entry></feed>