<?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>Ben Waldron</title><link>http://blogs.msdn.com/bwaldron/default.aspx</link><description /><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Extend Team Foundation Server To Enable Continuous Integration</title><link>http://blogs.msdn.com/bwaldron/archive/2006/02/20/535830.aspx</link><pubDate>Tue, 21 Feb 2006 05:49:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:535830</guid><dc:creator>bwaldron</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/bwaldron/comments/535830.aspx</comments><wfw:commentRss>http://blogs.msdn.com/bwaldron/commentrss.aspx?PostID=535830</wfw:commentRss><description>&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;My latest MSDN Article is the &lt;/FONT&gt;&lt;A href="http://msdn.microsoft.com/msdnmag/issues/06/03/"&gt;&lt;FONT face=Tahoma size=2&gt;March Edition&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Tahoma size=2&gt; of &lt;/FONT&gt;&lt;A href="http://msdn.microsoft.com/msdnmag"&gt;&lt;EM&gt;&lt;FONT face=Tahoma size=2&gt;MSDN Magazine&lt;/FONT&gt;&lt;/EM&gt;&lt;/A&gt;&lt;FONT face=Tahoma size=2&gt;:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://msdn.microsoft.com/msdnmag/issues/06/03/TeamSystem/default.aspx"&gt;&lt;FONT face=Tahoma size=2&gt;Agile Development: Extend Team Foundation Server To Enable Continuous Integration&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;The article outlines Extreme Programming (XP) and how continuous integration fits into it and other Agile development methodologies.&amp;nbsp; It goes onto to describe how to extend Team Foundation Server to use continuous integration.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma size=2&gt;The code samples for the article were written for Team Foundation Server Beta 3.&amp;nbsp; There were some changes in the RC version that caused my sample to break.&amp;nbsp; I will make an update to the code and post it here shortly.&lt;/FONT&gt;&amp;nbsp; &lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=535830" width="1" height="1"&gt;</description></item><item><title>Alternate Data Stream Questions</title><link>http://blogs.msdn.com/bwaldron/archive/2005/02/08/369565.aspx</link><pubDate>Wed, 09 Feb 2005 05:19:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:369565</guid><dc:creator>bwaldron</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/bwaldron/comments/369565.aspx</comments><wfw:commentRss>http://blogs.msdn.com/bwaldron/commentrss.aspx?PostID=369565</wfw:commentRss><description>&lt;p&gt;&lt;font face="Tahoma" size="2"&gt;I received the following question today regarding NTFS Alternate Data Streams and it is a good topic to post:&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;em&gt;&lt;font face="Tahoma" color="#000080" size="2"&gt;I just found your &lt;a href="http://www.gotdotnet.com/Community/UserSamples/Details.aspx?SampleGuid=5B3CF345-80C1-46F7-8D34-4CAC36E04449"&gt;NTFS ADS article &lt;/a&gt;and class (thanks!) on GotDotNet, yesterday - after seeing most everything else on ADS over the past month.&amp;nbsp; [Summary: User has been using ADS streams to store metadata and had large binary data in the main stream].&amp;nbsp; I've been basing much of what I need to do on Indexing Service, but (as far as I can discern) there's no way to get IS to index the ADSs. Is that right?&amp;nbsp; Also, I think that it is necessary to write some sort of "ADS archiving" utility, since ?only the NTFS file system retains those streams. Is that so? I thought I saw that one CD-R format also could preserve the hidden streams.&lt;/font&gt;&lt;/em&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Tahoma" size="2"&gt;I have used this ADS to latch data to files for a long time and works great if the file is always on an NTFS file system.&amp;nbsp; You lose the streams if you email it or transport the file&amp;nbsp;off&amp;nbsp;to file systems formats that do not supports streams (like ISO 9660, etc).&amp;nbsp; You can write code to serialize the information in the streams, but once you reach that point is usually means you should pick another way to tie data together.&amp;nbsp; Most commercial-grade backup software supports saving the NTFS ADS streams.&amp;nbsp; I&amp;nbsp;haven't seen any CD formats that support this but I really haven't&amp;nbsp;look long and hard&amp;nbsp;for one.&amp;nbsp; Perhaps, someone reading this&amp;nbsp;can chime in.&amp;nbsp;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Tahoma" size="2"&gt;Indexing Service does not support ADS Streams (that I know of), but you could write an IFilter that opens up the streams and indexes the data in the streams.&amp;nbsp; I haven't seen an IFilter that does this, but it is a interesting idea and very possible.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Tahoma" size="2"&gt;These are great questions...Thanks!&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Tahoma" size="2"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=369565" width="1" height="1"&gt;</description></item><item><title>Thanks again to Josh Ledgard</title><link>http://blogs.msdn.com/bwaldron/archive/2005/01/24/359603.aspx</link><pubDate>Mon, 24 Jan 2005 20:47:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:359603</guid><dc:creator>bwaldron</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/bwaldron/comments/359603.aspx</comments><wfw:commentRss>http://blogs.msdn.com/bwaldron/commentrss.aspx?PostID=359603</wfw:commentRss><description>&lt;font face="Tahoma" size="2"&gt;Just another thank you to &lt;A href="http://blogs.msdn.com/jledgard/"&gt;Josh&lt;/a&gt; for his &lt;/font&gt;&lt;A href="http://blogs.msdn.com/jledgard/archive/2005/01/19/356978.aspx"&gt;&lt;font face="Tahoma" size="2"&gt;post&lt;/font&gt;&lt;/a&gt;&lt;font face="Tahoma" size="2"&gt; on how to create update the style for blogs hosted with &lt;/font&gt;&lt;a href="http://scottwater.com/blog"&gt;&lt;font face="Tahoma" size="2"&gt;.Text&lt;/font&gt;&lt;/a&gt;&lt;font face="Tahoma" size="2"&gt;.&amp;nbsp; I have updated my style using his tips and thank him for saving us all a ton of time.&lt;/font&gt;&amp;nbsp; &lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=359603" width="1" height="1"&gt;</description></item><item><title>Managed Smart Tags - Another Shameless Plug </title><link>http://blogs.msdn.com/bwaldron/archive/2005/01/11/350463.aspx</link><pubDate>Tue, 11 Jan 2005 11:24:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:350463</guid><dc:creator>bwaldron</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/bwaldron/comments/350463.aspx</comments><wfw:commentRss>http://blogs.msdn.com/bwaldron/commentrss.aspx?PostID=350463</wfw:commentRss><description>&lt;p&gt;&lt;font face="Tahoma" size="2"&gt;The February Issue of &lt;/font&gt;&lt;a href="http://msdn.microsoft.com/msdnmag/default.aspx"&gt;&lt;font face="Tahoma" size="2"&gt;MSDN Magazine&lt;/font&gt;&lt;/a&gt;&lt;font face="Tahoma" size="2"&gt; is out and an article the I wrote about writing Managed Smart Tags for Office applications is in that issue.&amp;nbsp; When I began to write the article, I asked a bunch of developers if they had ever written a Smart Tag (managed or unmanaged).&amp;nbsp;&amp;nbsp;It was&amp;nbsp;1 out of about 10 actually had written one.&amp;nbsp; The great thing about Smart Tags is that every company big or small that uses Office can use them in some way.&amp;nbsp; This can range from a simple link to shipping information based on a unique code or something more complex like aggregating sales information and presenting it in the Research Pane.&amp;nbsp; I hope the article allows some developers to revisit Smart Tags and do some great thing with them.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Tahoma" size="2"&gt;If you are willing to share some ideas that you have or have implemented, I think many people would like to hear it.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Tahoma" size="2"&gt;Here is a link to the article: &lt;/font&gt;&lt;a href="http://msdn.microsoft.com/msdnmag/issues/05/02/ManagedSmartTags/default.aspx"&gt;&lt;font face="Tahoma" size="2"&gt;Realize the Potential of Office 2003 by Creating Smart Tags in Managed Code&lt;/font&gt;&lt;/a&gt;&lt;font face="Tahoma" size="2"&gt;.&amp;nbsp; Also, &lt;/font&gt;&lt;A href="http://blogs.msdn.com/johnrdurant"&gt;&lt;font face="Tahoma" size="2"&gt;John Durant &lt;/font&gt;&lt;/a&gt;&lt;font face="Tahoma" size="2"&gt;wrote a great article on &lt;/font&gt;&lt;a href="http://msdn.microsoft.com/msdnmag/issues/05/02/ResearchServices/"&gt;&lt;font face="Tahoma" size="2"&gt;Custom Research Services&lt;/font&gt;&lt;/a&gt;&lt;font face="Tahoma" size="2"&gt;&amp;nbsp;in the same issue that shows how to write a service for the Research Pane.&lt;/font&gt;&amp;nbsp; &lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=350463" width="1" height="1"&gt;</description></item><item><title>Feedback on Master Templates</title><link>http://blogs.msdn.com/bwaldron/archive/2005/01/10/349686.aspx</link><pubDate>Mon, 10 Jan 2005 08:24:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:349686</guid><dc:creator>bwaldron</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/bwaldron/comments/349686.aspx</comments><wfw:commentRss>http://blogs.msdn.com/bwaldron/commentrss.aspx?PostID=349686</wfw:commentRss><description>&lt;p&gt;&lt;font face="Tahoma" size="2"&gt;There is a good discussion going on about ASP.NET 2.0 Master Templates and the types of templates to include&amp;nbsp;in Whidbey.&amp;nbsp; My personal opinion is the more types of templates the better because it gives developer's good starting points to creating&amp;nbsp;their own&amp;nbsp;Master Template.&amp;nbsp; To add your own feedback, go to &lt;/font&gt;&lt;A href="http://blogs.msdn.com/bgold/archive/2005/01/07/348656.aspx"&gt;&lt;font face="Tahoma" size="2"&gt;Brian Goldfarb's &lt;/font&gt;&lt;/a&gt;&lt;font face="Tahoma" size="2"&gt;Blog.&lt;/font&gt; &lt;p&gt;&lt;font face="Tahoma" size="2"&gt;Remember all the include files you needed to add to do similar templating in ASP?&amp;nbsp; Wow, that was sure&amp;nbsp;fun.&lt;/font&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=349686" width="1" height="1"&gt;</description></item><item><title>Small Business Server</title><link>http://blogs.msdn.com/bwaldron/archive/2005/01/05/346925.aspx</link><pubDate>Wed, 05 Jan 2005 19:21:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:346925</guid><dc:creator>bwaldron</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/bwaldron/comments/346925.aspx</comments><wfw:commentRss>http://blogs.msdn.com/bwaldron/commentrss.aspx?PostID=346925</wfw:commentRss><description>&lt;p&gt;&lt;font face="Tahoma" size="2"&gt;I got my copy of MSDN out and decided to install Small Business Server 2003.&amp;nbsp; I have to say that it is probably one of the most complete solutions that we (Microsoft) have ever put together.&amp;nbsp; After a 30 minute install, I had a fictitious company intranet, extranet, and accounts created with an Exchange Server.&amp;nbsp;I had a registered DNS name and got everything hooked up in minutes where I can&amp;nbsp;remote into my intranet, check email and all the other types of tasks that I routinely do when I&amp;nbsp;remotely hook up to Microsoft's network.&amp;nbsp; I even can&amp;nbsp;even&amp;nbsp;check&amp;nbsp;this email from my Smartphone which is very, very cool.&amp;nbsp;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Tahoma" size="2"&gt;I have to admit that when someone says DNS and Exchange in the same sentence, I tend to pawn those questions off to some on my infrastructure guru friends, but this installation was as straightforward as they come.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Tahoma" size="2"&gt;I tried to put myself in the shoes of a small business owner that does not have any IT training.&amp;nbsp; I believe that a small business owner could get this up and running by themselves or with minimal help.&amp;nbsp; A true testament to the work that the Small Business Team did to really hit the mark.&lt;/font&gt;&amp;nbsp; &lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=346925" width="1" height="1"&gt;</description></item><item><title>Determine MIME Type for Content</title><link>http://blogs.msdn.com/bwaldron/archive/2005/01/04/346547.aspx</link><pubDate>Wed, 05 Jan 2005 01:31:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:346547</guid><dc:creator>bwaldron</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/bwaldron/comments/346547.aspx</comments><wfw:commentRss>http://blogs.msdn.com/bwaldron/commentrss.aspx?PostID=346547</wfw:commentRss><description>&lt;p&gt;&lt;font face="Tahoma" size="2"&gt;A while back I was looking for an API to determine content types.&amp;nbsp; One API that I found useful was the &lt;/font&gt;&lt;a href="http://msdn.microsoft.com/library/default.asp?url=/workshop/networking/moniker/reference/functions/findmimefromdata.asp"&gt;&lt;font face="Tahoma" size="2"&gt;FindMimeFromData&lt;/font&gt;&lt;/a&gt;&lt;font face="Tahoma" size="2"&gt; API.&amp;nbsp; You cane give this method the first 256 bytes of a file and then determine its MIME types (eg. text/plain, text/html, binary content, etc).&amp;nbsp; It is useful for checking files that might not have an extention or when you want to double check to ensure that the extension fits the MIME type.&amp;nbsp; Once you determine that you can find other APIs to precisely determine what the file is.&amp;nbsp; For binary files, this usually means checking the magic number in the file header.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Tahoma" size="2"&gt;Not sure if this is useful to anyone but thought I'd share the P/Invoke to make it happen (below).&lt;/font&gt;&amp;nbsp; &lt;/p&gt;&lt;font color="#808080" size="1"&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 9pt; COLOR: gray; FONT-FAMILY: 'Courier New'"&gt;///&lt;/span&gt;&lt;span style="FONT-SIZE: 9pt; COLOR: green; FONT-FAMILY: 'Courier New'"&gt; &lt;/span&gt;&lt;span style="FONT-SIZE: 9pt; COLOR: gray; FONT-FAMILY: 'Courier New'"&gt;&amp;lt;summary&amp;gt;&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; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 9pt; COLOR: gray; FONT-FAMILY: 'Courier New'"&gt;///&lt;/span&gt;&lt;span style="FONT-SIZE: 9pt; COLOR: green; FONT-FAMILY: 'Courier New'"&gt; Utility class contains static method checkType to determine Mime Type&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: 9pt; COLOR: gray; FONT-FAMILY: 'Courier New'"&gt;///&lt;/span&gt;&lt;span style="FONT-SIZE: 9pt; COLOR: green; FONT-FAMILY: 'Courier New'"&gt; &lt;/span&gt;&lt;span style="FONT-SIZE: 9pt; COLOR: gray; FONT-FAMILY: 'Courier New'"&gt;&amp;lt;/summary&amp;gt;&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: 9pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;public&lt;/span&gt;&lt;span style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="COLOR: blue"&gt;class&lt;/span&gt;&lt;font color="#000000"&gt; MimeTypeUtil {&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&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: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&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: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;[DllImport(@"urlmon.dll", CharSet=CharSet.Auto)]&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&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: 9pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;private&lt;/span&gt;&lt;span style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="COLOR: blue"&gt;extern&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="COLOR: blue"&gt;static&lt;/span&gt;&lt;font color="#000000"&gt; System.UInt32 FindMimeFromData(&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&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: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;System.UInt32 pBC,&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&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: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;[MarshalAs(UnmanagedType.LPStr)] System.String pwzUrl,&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&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: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;[MarshalAs(UnmanagedType.LPArray)] &lt;/font&gt;&lt;span style="COLOR: blue"&gt;byte&lt;/span&gt;&lt;font color="#000000"&gt;[] pBuffer, &lt;o:p&gt;&lt;/o:p&gt;&lt;/font&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: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;System.UInt32 cbSize,&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&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: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;[MarshalAs(UnmanagedType.LPStr)] System.String pwzMimeProposed,&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&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: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;System.UInt32 dwMimeFlags,&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&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: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-tab-count: 1"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR: blue"&gt;out&lt;/span&gt;&lt;font color="#000000"&gt; System.UInt32 ppwzMimeOut,&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&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: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;System.UInt32 dwReserved);&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&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: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&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: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font color="#000000"&gt;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR: blue"&gt;public&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="COLOR: blue"&gt;static&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="COLOR: blue"&gt;string&lt;/span&gt;&lt;font color="#000000"&gt; CheckType(&lt;/font&gt;&lt;span style="COLOR: blue"&gt;string&lt;/span&gt;&lt;font color="#000000"&gt; filePath) {&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&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: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR: blue"&gt;byte&lt;/span&gt;&lt;font color="#000000"&gt;[] buffer = &lt;/font&gt;&lt;span style="COLOR: blue"&gt;new&lt;/span&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;span style="COLOR: blue"&gt;byte&lt;/span&gt;&lt;font color="#000000"&gt;[256];&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&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: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR: green"&gt;// grab the first 256 bytes on the file&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; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR: blue"&gt;using&lt;/span&gt;&lt;font color="#000000"&gt; (FileStream fileStream = &lt;/font&gt;&lt;span style="COLOR: blue"&gt;new&lt;/span&gt;&lt;font color="#000000"&gt; FileStream(filePath, FileMode.Open)) {&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&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: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-tab-count: 1"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR: blue"&gt;if&lt;/span&gt;&lt;font color="#000000"&gt; (fileStream.Length &amp;gt;=256) &lt;o:p&gt;&lt;/o:p&gt;&lt;/font&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: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;fileStream.Read(buffer,0,256);&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&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: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-tab-count: 1"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR: blue"&gt;else&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; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;fileStream.Read(buffer,0,(&lt;/font&gt;&lt;span style="COLOR: blue"&gt;int&lt;/span&gt;&lt;font color="#000000"&gt;)fileStream.Length);&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&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: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&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: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR: blue"&gt;try &lt;/span&gt;&lt;font color="#000000"&gt;{&lt;span style="COLOR: blue"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&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: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;System.UInt32 mimeType;&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&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: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;System.UInt32 returnValue = FindMimeFromData( 0, &lt;/font&gt;&lt;span style="COLOR: blue"&gt;null&lt;/span&gt;&lt;font color="#000000"&gt;, buffer, 256, &lt;/font&gt;&lt;span style="COLOR: blue"&gt;null&lt;/span&gt;&lt;font color="#000000"&gt;, 0, &lt;/font&gt;&lt;span style="COLOR: blue"&gt;out&lt;/span&gt;&lt;font color="#000000"&gt; mimeType, 0);&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&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: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;System.IntPtr mimeTypePointer = &lt;/font&gt;&lt;span style="COLOR: blue"&gt;new&lt;/span&gt;&lt;font color="#000000"&gt; IntPtr(mimeType);&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&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: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-tab-count: 1"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR: blue"&gt;return&lt;/span&gt;&lt;font color="#000000"&gt; Marshal.PtrToStringUni(mimeTypePointer);&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&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: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&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: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR: blue"&gt;catch&lt;/span&gt;&lt;font color="#000000"&gt;(Exception ex) {&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&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: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR: blue"&gt;return&lt;/span&gt;&lt;font color="#000000"&gt; ex.Message;&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&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: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&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: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;}&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&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: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;font color="#000000"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=346547" width="1" height="1"&gt;</description></item><item><title>Developing .NET COM Callable Wrappers (CCW)</title><link>http://blogs.msdn.com/bwaldron/archive/2004/12/01/273476.aspx</link><pubDate>Thu, 02 Dec 2004 06:03:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:273476</guid><dc:creator>bwaldron</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/bwaldron/comments/273476.aspx</comments><wfw:commentRss>http://blogs.msdn.com/bwaldron/commentrss.aspx?PostID=273476</wfw:commentRss><description>&lt;p&gt;&lt;font face="Tahoma" size="2"&gt;There is quite a bit of information posted on developing COM Callable Wrappers in .NET.&amp;nbsp; Below is some information that I've compiled after developing quite a few.&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt; &lt;h2 style="MARGIN: 12pt 0in 3pt"&gt;&lt;em&gt;&lt;font face="Arial"&gt;&lt;/font&gt;&lt;/em&gt;&lt;/h2&gt;&lt;span style="mso-bidi-font-family: Tahoma"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;font face="Tahoma" size="2"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;span style="mso-bidi-font-family: Tahoma"&gt;&lt;font size="2"&gt;&lt;font face="Tahoma"&gt;Developing COM Callable Wrappers, all types exposed to COM should follow the guidelines presented in the following checklist:&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="mso-bidi-font-family: Tahoma"&gt;&lt;o:p&gt;&lt;font face="Tahoma" size="2"&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 27pt; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo2; tab-stops: list 27.0pt"&gt;&lt;span style="mso-fareast-font-family: Tahoma; mso-bidi-font-family: Tahoma"&gt;&lt;span style="mso-list: Ignore"&gt;&lt;font face="Tahoma" size="2"&gt;-&lt;/font&gt;&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-bidi-font-family: Tahoma"&gt;&lt;font size="2"&gt;&lt;font face="Tahoma"&gt;Ensure AssembyVersionAttribute is set to a static value (i.e. &lt;?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /&gt;&lt;st1:whois w:st="on"&gt;1.0.0.0&lt;/st1:whois&gt; not 1.0.0.*)&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 27pt; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo2; tab-stops: list 27.0pt"&gt;&lt;span style="mso-fareast-font-family: Tahoma; mso-bidi-font-family: Tahoma"&gt;&lt;span style="mso-list: Ignore"&gt;&lt;font face="Tahoma" size="2"&gt;-&lt;/font&gt;&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-bidi-font-family: Tahoma"&gt;&lt;font size="2"&gt;&lt;font face="Tahoma"&gt;Add System.Runtime.InteropServices namespace to files that have types exposed to COM.&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 1in; TEXT-INDENT: -0.25in; mso-list: l0 level2 lfo2; tab-stops: list 1.0in"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Courier New'"&gt;&lt;span style="mso-list: Ignore"&gt;&lt;font size="2"&gt;o&lt;/font&gt;&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-bidi-font-family: Tahoma"&gt;&lt;font size="2"&gt;&lt;font face="Tahoma"&gt;This includes all of the Attributes necessary to create types exposed to COM.&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 27pt; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo2; tab-stops: list 27.0pt"&gt;&lt;span style="mso-fareast-font-family: Tahoma; mso-bidi-font-family: Tahoma"&gt;&lt;span style="mso-list: Ignore"&gt;&lt;font face="Tahoma" size="2"&gt;-&lt;/font&gt;&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-bidi-font-family: Tahoma"&gt;&lt;font size="2"&gt;&lt;font face="Tahoma"&gt;An interface defined that exposes properties and methods for the type.&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 1in; TEXT-INDENT: -0.25in; mso-list: l0 level2 lfo2; tab-stops: list 1.0in"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Courier New'"&gt;&lt;span style="mso-list: Ignore"&gt;&lt;font size="2"&gt;o&lt;/font&gt;&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-bidi-font-family: Tahoma"&gt;&lt;font size="2"&gt;&lt;font face="Tahoma"&gt;Creating this interface manually forces the developer to know that the interface has changed and can plan accordingly.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;The alternative is to let the Type Library exporter automatically generate a interface for the type which can lead to accidentally deploying a type with a breaking change.&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 27pt; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo2; tab-stops: list 27.0pt"&gt;&lt;span style="mso-fareast-font-family: Tahoma; mso-bidi-font-family: Tahoma"&gt;&lt;span style="mso-list: Ignore"&gt;&lt;font face="Tahoma" size="2"&gt;-&lt;/font&gt;&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-bidi-font-family: Tahoma"&gt;&lt;font size="2"&gt;&lt;font face="Tahoma"&gt;Creating a type (coclass) that implements the interface.&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 27pt; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo2; tab-stops: list 27.0pt"&gt;&lt;span style="mso-fareast-font-family: Tahoma; mso-bidi-font-family: Tahoma"&gt;&lt;span style="mso-list: Ignore"&gt;&lt;font face="Tahoma" size="2"&gt;-&lt;/font&gt;&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-bidi-font-family: Tahoma"&gt;&lt;font size="2"&gt;&lt;font face="Tahoma"&gt;Decorate types with ClassInterfaceAttribute with a ClassInterfaceType.None value (i.e. [ClassInterface(ClassInterfaceType.None)] )&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 1in; TEXT-INDENT: -0.25in; mso-list: l0 level2 lfo2; tab-stops: list 1.0in"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Courier New'"&gt;&lt;span style="mso-list: Ignore"&gt;&lt;font size="2"&gt;o&lt;/font&gt;&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font size="2"&gt;&lt;font face="Tahoma"&gt;This attribute controls whether the Type Library Exporter (Tlbexp.exe) automatically generates a class interface for the attributed class.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Since the interface is defined manually and the coclass implements the interface, we are telling the Type Library Exporter that we have done the work ourselves.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="mso-bidi-font-family: Tahoma"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 27pt; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo2; tab-stops: list 27.0pt"&gt;&lt;span style="mso-fareast-font-family: Tahoma; mso-bidi-font-family: Tahoma"&gt;&lt;span style="mso-list: Ignore"&gt;&lt;font face="Tahoma" size="2"&gt;-&lt;/font&gt;&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-bidi-font-family: Tahoma"&gt;&lt;font size="2"&gt;&lt;font face="Tahoma"&gt;Decorate types and interfaces with ComVisibleAttribute with a true value (i.e. [ComVisible(true)] )&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 1in; TEXT-INDENT: -0.25in; mso-list: l0 level2 lfo2; tab-stops: list 1.0in"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Courier New'"&gt;&lt;span style="mso-list: Ignore"&gt;&lt;font size="2"&gt;o&lt;/font&gt;&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-bidi-font-family: Tahoma"&gt;&lt;font size="2"&gt;&lt;font face="Tahoma"&gt;By default, all ComVisible is set to true.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Explicity setting these options signals which types and members are visible.&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 27pt; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo2; tab-stops: list 27.0pt"&gt;&lt;span style="mso-fareast-font-family: Tahoma; mso-bidi-font-family: Tahoma"&gt;&lt;span style="mso-list: Ignore"&gt;&lt;font face="Tahoma" size="2"&gt;-&lt;/font&gt;&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font size="2"&gt;&lt;font face="Tahoma"&gt;&lt;span style="mso-bidi-font-family: Tahoma"&gt;Decorate all &lt;/span&gt;structures, delegates, enumerations, fields, methods, and properties exposed to COM &lt;span style="mso-bidi-font-family: Tahoma"&gt;with ComVisibleAttribute with a true value; likewise, set all that are not visible to COM to false.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 27pt; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo2; tab-stops: list 27.0pt"&gt;&lt;span style="mso-fareast-font-family: Tahoma; mso-bidi-font-family: Tahoma"&gt;&lt;span style="mso-list: Ignore"&gt;&lt;font face="Tahoma" size="2"&gt;-&lt;/font&gt;&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-bidi-font-family: Tahoma"&gt;&lt;font size="2"&gt;&lt;font face="Tahoma"&gt;A parameter-less default constructor.&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 1in; TEXT-INDENT: -0.25in; mso-list: l1 level2 lfo1; tab-stops: list 1.0in"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Courier New'"&gt;&lt;span style="mso-list: Ignore"&gt;&lt;font size="2"&gt;o&lt;/font&gt;&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-bidi-font-family: Tahoma"&gt;&lt;font size="2"&gt;&lt;font face="Tahoma"&gt;Needed to instantiate object via COM.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Parameterized constructors can be declared but cannot be used from COM.&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="mso-bidi-font-family: Tahoma"&gt;&lt;o:p&gt;&lt;font face="Tahoma" size="2"&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="mso-bidi-font-family: Tahoma"&gt;&lt;font size="2"&gt;&lt;font face="Tahoma"&gt;The example class below shows a class that follows the guidance outlines in the above checklist.&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="mso-bidi-font-family: Tahoma"&gt;&lt;o:p&gt;&lt;font face="Tahoma" size="2"&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; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;using&lt;/span&gt;&lt;span style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt; System;&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: 9pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;using&lt;/span&gt;&lt;span style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt; System.Reflection;&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: 9pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;using&lt;/span&gt;&lt;span style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt; System.Runtime.InteropServices;&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: 9pt; FONT-FAMILY: 'Courier New'"&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; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;[assembly: AssemblyVersion("&lt;st1:whois w:st="on"&gt;1.0.0.0&lt;/st1:whois&gt;")]&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: 9pt; FONT-FAMILY: 'Courier New'"&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; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;namespace&lt;/span&gt;&lt;span style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt; ComSample&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: 9pt; FONT-FAMILY: 'Courier New'"&gt;{&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: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&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: 9pt; FONT-FAMILY: 'Courier New'"&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; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;[ComVisible(&lt;span style="COLOR: blue"&gt;true&lt;/span&gt;)]&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: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;interface&lt;/span&gt; ICircle&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: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&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: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;double&lt;/span&gt; Radius {&lt;span style="COLOR: blue"&gt;get&lt;/span&gt;; &lt;span style="COLOR: blue"&gt;set&lt;/span&gt;;}&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: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;double&lt;/span&gt; ComputeCircumference();&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: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&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: 9pt; FONT-FAMILY: 'Courier New'"&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; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;[ClassInterface(ClassInterfaceType.None),&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: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;ComVisible(&lt;span style="COLOR: blue"&gt;true&lt;/span&gt;)]&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: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;class&lt;/span&gt; Circle : ICircle&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: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&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: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;private&lt;/span&gt; &lt;span style="COLOR: blue"&gt;double&lt;/span&gt; radius;&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: 9pt; FONT-FAMILY: 'Courier New'"&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; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;public&lt;/span&gt; Circle()&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: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&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: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-tab-count: 3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: green"&gt;// parameterless constructor&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; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&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: 9pt; FONT-FAMILY: 'Courier New'"&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; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;[ComVisible(&lt;span style="COLOR: blue"&gt;true&lt;/span&gt;)]&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: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;double&lt;/span&gt; Radius&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: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&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: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-tab-count: 3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;get&lt;/span&gt;{ &lt;span style="COLOR: blue"&gt;return&lt;/span&gt; radius; }&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: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-tab-count: 3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;set&lt;/span&gt;{ radius = &lt;span style="COLOR: blue"&gt;value&lt;/span&gt;; }&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: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&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: 9pt; FONT-FAMILY: 'Courier New'"&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; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;[ComVisible(&lt;span style="COLOR: blue"&gt;true&lt;/span&gt;)]&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: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;double&lt;/span&gt; ComputeCircumference()&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: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&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: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-tab-count: 4"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;return&lt;/span&gt; radius * System.Math.PI;&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: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&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: 9pt; FONT-FAMILY: 'Courier New'"&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; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;[ComVisible(&lt;span style="COLOR: blue"&gt;false&lt;/span&gt;)]&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: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;double&lt;/span&gt; WhatisPi()&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: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&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: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-tab-count: 4"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;return&lt;/span&gt; System.Math.PI;&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: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&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: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&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: 9pt; FONT-FAMILY: 'Courier New'"&gt;}&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: 9pt; FONT-FAMILY: 'Courier New'"&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; mso-layout-grid-align: none"&gt;&lt;span style="mso-bidi-font-family: Tahoma"&gt;&lt;font size="2"&gt;&lt;font face="Tahoma"&gt;Figure 1. Sample class to be exposed via a CCW.&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="mso-bidi-font-family: Tahoma"&gt;&lt;o:p&gt;&lt;font face="Tahoma" size="2"&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="mso-bidi-font-family: Tahoma"&gt;&lt;o:p&gt;&lt;font face="Tahoma" size="2"&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="mso-bidi-font-family: Tahoma"&gt;&lt;font size="2"&gt;&lt;font face="Tahoma"&gt;Each time the type is to be deployed, the &lt;st1:mswterms w:st="on"&gt;.NET&lt;/st1:mswterms&gt; version must be increased.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Following versioning guidelines, each time the CCW is to be deployed, the major or minor version number should be increased.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;This also allows the version to be clearly differentiated when the type is viewed.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Updating the version will produce a new CLSID (guid) associated with this type.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;This is important step when deploying updated COM Callable Wrappers.&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="mso-bidi-font-family: Tahoma"&gt;&lt;font size="2"&gt;&lt;font face="Tahoma"&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="mso-bidi-font-family: Tahoma"&gt;&lt;font size="2"&gt;&lt;font face="Tahoma"&gt;Any comments or reccomendations are welcome.&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=273476" width="1" height="1"&gt;</description></item><item><title>Migration to Virtual Server 2005</title><link>http://blogs.msdn.com/bwaldron/archive/2004/08/22/218684.aspx</link><pubDate>Mon, 23 Aug 2004 06:56:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:218684</guid><dc:creator>bwaldron</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/bwaldron/comments/218684.aspx</comments><wfw:commentRss>http://blogs.msdn.com/bwaldron/commentrss.aspx?PostID=218684</wfw:commentRss><description>&lt;p&gt;&lt;font face="Tahoma"&gt;I have gotten quite a bit of questions from people that&amp;nbsp;are starting to plan migrations to Virtual Server.&amp;nbsp; Most people are looking&amp;nbsp;to take existing testing environments or production systems into virtual machines.&amp;nbsp; Some others are have existing virtual machines that they want to migrate to Virtual Server.&amp;nbsp; Help is on the way with the Virtual Server Migration Toolkit (VSMT) which is currently avaialable in Beta.&amp;nbsp; VSMT uses &lt;/font&gt;&lt;a href="http://www.microsoft.com/windowsserver2003/technologies/management/ads/default.mspx"&gt;&lt;font face="Tahoma"&gt;Automated Deployment Services &lt;/font&gt;&lt;/a&gt;&lt;font face="Tahoma"&gt;to create virtual machines images of existing systems.&amp;nbsp; I've used it several times to take images of some dev boxes that I've consolidated....work really well.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Tahoma"&gt;VSMT FAQ: &lt;/font&gt;&lt;a href="http://www.microsoft.com/windowsserversystem/virtualserver/evaluation/vsmtfaq.mspx"&gt;&lt;font face="Tahoma"&gt;http://www.microsoft.com/windowsserversystem/virtualserver/evaluation/vsmtfaq.mspx&lt;/font&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Tahoma"&gt;Beta Info: &lt;/font&gt;&lt;a href="http://www.microsoft.com/windowsserversystem/virtualserver/evaluation/vsmtbeta.mspx"&gt;&lt;font face="Tahoma"&gt;http://www.microsoft.com/windowsserversystem/virtualserver/evaluation/vsmtbeta.mspx&lt;/font&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=218684" width="1" height="1"&gt;</description></item><item><title>Virtual Server 2005 - Shameless Plug</title><link>http://blogs.msdn.com/bwaldron/archive/2004/07/21/190690.aspx</link><pubDate>Thu, 22 Jul 2004 01:13:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:190690</guid><dc:creator>bwaldron</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/bwaldron/comments/190690.aspx</comments><wfw:commentRss>http://blogs.msdn.com/bwaldron/commentrss.aspx?PostID=190690</wfw:commentRss><description>&lt;P&gt;&lt;FONT face=Arial size=2&gt;I've working alot over the past few months on Virtual Server 2005.&amp;nbsp; One of the great uses of Virtual Server is the ability to quickly stand up a development and test enviroment.&amp;nbsp; To facilitate that, I created an application called Rapid Test that automates provisioning and mangement of virtual machines as well as automating software delivery.&amp;nbsp;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial size=2&gt;This month's MSDN Magazine has an article that details using the Virtual Server API to contruct the Rapid Test application.&amp;nbsp; The name of the article is &lt;/FONT&gt;&lt;A href="http://msdn.microsoft.com/msdnmag/issues/04/08/VirtualServer2005/default.aspx"&gt;&lt;FONT face=Arial size=2&gt;&amp;#8220;&lt;SPAN class=clsSmHead&gt;Virtual Server 2005 -&lt;/SPAN&gt;&amp;nbsp;Program Customized Testing Environments Without Trashing Your Machine&amp;#8221;&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Arial size=2&gt;.&amp;nbsp; It details the design and development of the application and has the full source code.&amp;nbsp; It should serve as a good reference implementation for doing similar things in Virtual Server 2005.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial size=2&gt;Please let me know what you think or have ideas on how to make it better.&amp;nbsp; I promise to post revisions going forward.&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=190690" width="1" height="1"&gt;</description></item><item><title>Active MCS Federal Bloggers</title><link>http://blogs.msdn.com/bwaldron/archive/2004/06/17/158639.aspx</link><pubDate>Fri, 18 Jun 2004 00:29:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:158639</guid><dc:creator>bwaldron</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/bwaldron/comments/158639.aspx</comments><wfw:commentRss>http://blogs.msdn.com/bwaldron/commentrss.aspx?PostID=158639</wfw:commentRss><description>&lt;div class="Section1"&gt; &lt;p&gt;&lt;font size="3" face="Times New Roman"&gt;&lt;span style='font-size:12.0pt'&gt;&amp;nbsp;I just wanted to link to a couple of the other active bloggers within MCS Federal:&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="3" face="Times New Roman"&gt;&lt;span style='font-size:12.0pt'&gt;&lt;a href="http://blogs.msdn.com/stcohen"&gt;Stephen Cohen&lt;/a&gt; &amp;ndash; posts about Enterprise Architecture.&amp;nbsp; He the one that reminds us that the line of business we help our customers create must be part of the grandiose plan that is Enterprise Architecture.&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="3" face="Times New Roman"&gt;&lt;span style='font-size:12.0pt'&gt;&lt;a href="http://blogs.msdn.com/Aaron_Margosis/"&gt;Aaron Margosis&lt;/a&gt; &amp;ndash; new bloggers that posts his thoughts and recommendations on security as demonstrated by his first posts on &amp;ldquo;&lt;a href="http://blogs.msdn.com/aaron_margosis/archive/2004/06/17/157962.aspx"&gt;Not Running as Admin&lt;/a&gt;.&amp;rdquo;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=158639" width="1" height="1"&gt;</description></item><item><title>Comment on Security Analysis</title><link>http://blogs.msdn.com/bwaldron/archive/2004/06/15/156749.aspx</link><pubDate>Wed, 16 Jun 2004 06:32:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:156749</guid><dc:creator>bwaldron</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/bwaldron/comments/156749.aspx</comments><wfw:commentRss>http://blogs.msdn.com/bwaldron/commentrss.aspx?PostID=156749</wfw:commentRss><description>&lt;P&gt;I have heard and read&amp;nbsp;the following statement quite a bit lately: &amp;#8220;If a malicious app or hacker has already obtained access to the file system (or some other entity) then you have bigger problems to worry about.&amp;#8221;&amp;nbsp;&amp;nbsp;What this reallys says&amp;nbsp;is that&amp;nbsp;you don't need to&amp;nbsp;protect against&amp;nbsp;some attack vector because you assume there are so many other&amp;nbsp;areas that a&amp;nbsp;malicious app could exploit.&amp;nbsp; I&amp;nbsp;am guilty of saying and thinking this in the&amp;nbsp;past, but&amp;nbsp;it is past time to stop thinking this way.&lt;/P&gt;
&lt;P&gt;I know I've said this in past because it is&amp;nbsp;easy to say and trying to model&amp;nbsp;threats for a hacker that has elevated privileges or a&amp;nbsp;malicious insider is very difficult.&amp;nbsp;&amp;nbsp;However, modeling this type of threat is&amp;nbsp;critical and there are protections that can be put in place.&amp;nbsp;&amp;nbsp;Take for example, a hacker that has access to the manipulate the file system.&amp;nbsp;&amp;nbsp;Using EFS and&amp;nbsp;protecting the key reduces the risk that an attacker can exploit key data.&amp;nbsp;&amp;nbsp;Sometimes, the risk&amp;nbsp;and impact is not great enough to take those types of measures, but at least you thought about and made a conscious decision to accept that risk.&amp;nbsp;&amp;nbsp;That is way, way better then just throwing up your hands and saying &amp;#8220;If that happens then you have bigger problems&amp;nbsp;to worry about.&amp;#8221;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=156749" width="1" height="1"&gt;</description></item><item><title>Regex Time Saver</title><link>http://blogs.msdn.com/bwaldron/archive/2004/06/09/152210.aspx</link><pubDate>Thu, 10 Jun 2004 05:40:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:152210</guid><dc:creator>bwaldron</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/bwaldron/comments/152210.aspx</comments><wfw:commentRss>http://blogs.msdn.com/bwaldron/commentrss.aspx?PostID=152210</wfw:commentRss><description>&lt;P&gt;I just don't think in regular expressions like some people.&amp;nbsp; I don't use regular expressions often, but every time I need them I wish that I would just learn the syntax because I end up going through a ton of time in debug more trying out various expressions.&amp;nbsp; Since I haven't bitten the bullet and become a Regex guru, &lt;A href="http://blogs.msdn.com/ericgu"&gt;EricGu&lt;/A&gt;'s &lt;A id=BrowseResourcesSamples_ViewResources_ResourcesList__ctl9__ctl0_HyperLinkTitle href="http://www.gotdotnet.com/Community/UserSamples/Details.aspx?SampleGuid=C712F2DF-B026-4D58-8961-4EE2729D7322"&gt;Regular Expression Workbench (V2.00)&lt;/A&gt;&amp;nbsp;&amp;nbsp;is the next best thing.&amp;nbsp; It saved me probably an hour last night with a complex expression.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=152210" width="1" height="1"&gt;</description></item><item><title>Researching Mobile Development Environment</title><link>http://blogs.msdn.com/bwaldron/archive/2004/05/20/135673.aspx</link><pubDate>Thu, 20 May 2004 10:31:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:135673</guid><dc:creator>bwaldron</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/bwaldron/comments/135673.aspx</comments><wfw:commentRss>http://blogs.msdn.com/bwaldron/commentrss.aspx?PostID=135673</wfw:commentRss><description>&lt;P&gt;I've been using Virtual PC to create a common development environment to take with me when I travel.&amp;nbsp; It is nice to have VS.NET set up in a VM with macros and preferences customized to me.&amp;nbsp; I also have&amp;nbsp;editors&amp;nbsp;and (licensed) third-party components&amp;nbsp;installed so I&amp;nbsp;always have them.&amp;nbsp;I take a copy of it with me at customer sites and it I don't have to spend time setting up.&amp;nbsp;&amp;nbsp; The way it configured now is that all my office apps are on the host machine and then I have a &amp;#8220;pure&amp;#8221; development environment inside the VM.&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P&gt;The issue I&amp;#8217;m grappling with is how to keep everything in sync.&amp;nbsp; For example, if I go on the road and make modification to code, documents, etc.; how do I update everything back on my workstation at home?&amp;nbsp; I have to update any documents on&amp;nbsp;the host plus any changes in the VM.&amp;nbsp; &lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P&gt;My thought here is to keep nothing on the VM and all files including Visual Studio projects on the host.&amp;nbsp; When I build a project, the build output would go inside the VM to avoid executing over networked drive.&amp;nbsp;(I do notice a slowdown in VS.NET when opening projects over a&amp;nbsp;shared drive to the host.)&amp;nbsp; I can then use something like Intellimirror to copy the updates to other machines.&amp;nbsp; &lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P&gt;I'm looking for any suggestions on this.&amp;nbsp; I'm willing to make a time investment because a good solution will safe a ton of time in the long run.&amp;nbsp; Anyone have a good solution for this?&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=135673" width="1" height="1"&gt;</description></item><item><title>NTFS Alternate Data Streams</title><link>http://blogs.msdn.com/bwaldron/archive/2004/05/12/130240.aspx</link><pubDate>Wed, 12 May 2004 07:33:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:130240</guid><dc:creator>bwaldron</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/bwaldron/comments/130240.aspx</comments><wfw:commentRss>http://blogs.msdn.com/bwaldron/commentrss.aspx?PostID=130240</wfw:commentRss><description>&lt;P&gt;I have always found NTFS Alternate Data Streams interesting.&amp;nbsp; It is an easy way to hide&amp;nbsp;metadata from users.&amp;nbsp;&amp;nbsp;&amp;nbsp;I wrote a utility called ADSFile as a .NET Wrapper for the Win32 API calls.&lt;/P&gt;
&lt;P&gt;Someone asked for me to provide the ability to enumerate data streams into ADSFile.&amp;nbsp; It&amp;nbsp;'s not as straightforward as I thought&amp;nbsp;because&amp;nbsp;the only way I found is&amp;nbsp;to use the &lt;A href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/base/backupread.asp"&gt;BackupRead &lt;/A&gt;and &lt;A href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/base/backupseek.asp"&gt;BackupSeek&lt;/A&gt; APIs to read and find the stream headers.&amp;nbsp; Code is here: &lt;A href="http://www.gotdotnet.com/Community/UserSamples/Details.aspx?SampleGuid=5b3cf345-80c1-46f7-8d34-4cac36e04449"&gt;gotdotnet.&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=1&gt;&amp;nbsp;&lt;/P&gt;&lt;/FONT&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=130240" width="1" height="1"&gt;</description></item></channel></rss>