<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>Hannes Pavelka</title>
        <link>http://geekswithblogs.net/pavelka/Default.aspx</link>
        <description>It isn't rocket science.  Well, unless of course you're NASA</description>
        <language>en-US</language>
        <copyright>Hannes Pavelka</copyright>
        <managingEditor>hjpavelka@gmail.com</managingEditor>
        <generator>Subtext Version 0.0.0.0</generator>
        <image>
            <title>Hannes Pavelka</title>
            <url>http://geekswithblogs.net/images/RSS2Image.gif</url>
            <link>http://geekswithblogs.net/pavelka/Default.aspx</link>
            <width>77</width>
            <height>60</height>
        </image>
        <item>
            <title>Top Ten List of 2006 publishedMSDN articles</title>
            <category>Misc</category>
            <link>http://geekswithblogs.net/pavelka/archive/2006/12/30/TopTenListOf2006PublishedMSDNArticles.aspx</link>
            <description>&lt;p&gt;I'd like to share my &lt;b&gt;top&lt;/b&gt; &lt;b&gt;ten list&lt;/b&gt; of MSDN articles which have been published 2006. What follows is a &lt;b&gt;completely subjective&lt;/b&gt; top-10 and ofcourse I can only take those articles into consideration which I have read.&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.microsoft.com/belux/msdn/nl/community/columns/jdruyts/wsproxy.mspx"&gt;Customizing generated Web Service proxies in Visual Studio 2005&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://msdn.microsoft.com/msdnmag/issues/06/04/ManagedSpy/"&gt;Deliver The Power Of Spy++ To Windows Forms With Our New Tool&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://msdn.microsoft.com/msdnmag/issues/06/02/CLRInsideOut/"&gt;Improving Application Startup Time&lt;/a&gt;&lt;a title="http://msdn.microsoft.com/msdnmag/issues/06/02/CLRInsideOut/" href="http://msdn.microsoft.com/msdnmag/issues/06/02/CLRInsideOut/"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://msdn.microsoft.com/msdnmag/issues/06/01/CLRInsideOut/"&gt;Base Class Library Performance Tips and Tricks&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://msdn.microsoft.com/msdnmag/issues/06/09/EnterpriseLibrary/"&gt;Take Exception To Critical Errors With Custom Application Blocks&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://msdn.microsoft.com/msdnmag/issues/06/05/CLRInsideOut/"&gt;The Performance Benefits of NGen&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://msdn.microsoft.com/msdnmag/issues/06/08/CuttingEdge/"&gt;All About Enums&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://msdn.microsoft.com/msdnmag/issues/06/09/ServiceStation/"&gt;What's new in System.Xml 2.0&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://msdn.microsoft.com/msdnmag/issues/06/06/NETMatters/"&gt;Parameterized ThreadStart, EventWaitHandle, and More&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://msdn.microsoft.com/msdnmag/issues/06/04/MutationTesting/"&gt;Create A Simple Mutation Testing System With The .NET Framework&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=111882"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=111882" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/pavelka/aggbug/111882.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Hannes Pavelka</dc:creator>
            <guid>http://geekswithblogs.net/pavelka/archive/2006/12/30/TopTenListOf2006PublishedMSDNArticles.aspx</guid>
            <pubDate>Sat, 30 Dec 2006 08:59:32 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/pavelka/comments/111882.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/pavelka/archive/2006/12/30/TopTenListOf2006PublishedMSDNArticles.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/pavelka/comments/commentRss/111882.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/pavelka/services/trackbacks/111882.aspx</trackback:ping>
        </item>
        <item>
            <title>Install Soundblaster on VIrtual PC with Windows 2003</title>
            <link>http://geekswithblogs.net/pavelka/archive/2006/08/03/InstallSoundblasterOnVIrtualPCWithWindows2003.aspx</link>
            <description>&lt;p&gt;I just installed a VPC running Windows 2003 Server. &lt;br /&gt;Virtual PC is emulating a Soundblaster 16 but Windows 2003 does not provide any drivers. &lt;/p&gt;&lt;p&gt;Thus to get sound working (either for playback or recording) you need to manually install the appropriate drivers. &lt;/p&gt;&lt;p&gt;The two driver files you need are &lt;em&gt;wdma_ctl.inf&lt;/em&gt; and &lt;em&gt;ctlsb16.sys. &lt;br /&gt;&lt;/em&gt;Windows XP is having those two files. To get them do the following: &lt;/p&gt;&lt;p&gt;From a command prompt: &lt;br /&gt;&lt;em&gt;expand "%windir%\driver cache\i386\driver.cab" -F:ctlsb16.sys c:\&lt;/em&gt;&lt;br /&gt;This will extract the &lt;em&gt;ctlsb16.sys &lt;/em&gt;to your root c:\ &lt;/p&gt;&lt;p&gt;The &lt;em&gt;wdma_ctl.inf &lt;/em&gt;is located at &lt;em&gt;C:\WINDOWS\inf&lt;br /&gt;&lt;/em&gt;Now copy those two files over to the Virtual PC and point to the appropriate location during installation of the soundcard. &lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=111881"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=111881" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/pavelka/aggbug/111881.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Hannes Pavelka</dc:creator>
            <guid>http://geekswithblogs.net/pavelka/archive/2006/08/03/InstallSoundblasterOnVIrtualPCWithWindows2003.aspx</guid>
            <pubDate>Thu, 03 Aug 2006 08:13:01 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/pavelka/comments/111881.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/pavelka/archive/2006/08/03/InstallSoundblasterOnVIrtualPCWithWindows2003.aspx#feedback</comments>
            <slash:comments>11</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/pavelka/comments/commentRss/111881.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/pavelka/services/trackbacks/111881.aspx</trackback:ping>
        </item>
        <item>
            <title>WSE multi-threading an application with a single proxy</title>
            <link>http://geekswithblogs.net/pavelka/archive/2006/04/28/WSEMultiThreadingAnApplicationWithASingleProxy.aspx</link>
            <description>&lt;p&gt;Oh yes, the following took me a while to find out ;) &lt;/p&gt;&lt;p&gt;&lt;em&gt;The WSE-enabled proxy class is not thread-safe. When the proxy class is used to make multiple asynchronous calls to a Web service method, each call must be completed using the EndXX method before another call may be made.&lt;/em&gt; &lt;/p&gt;&lt;p&gt;&lt;em&gt;WSE proxies contain state that is used for each method call. This&lt;br /&gt;is the RequestSoapContext and ResponseSoapContext. Making 2 or more &lt;br /&gt;concurrent calls from different threads means that each of those threads &lt;br /&gt;will be attempting to access this state and this may produce conflicts. &lt;/em&gt; &lt;/p&gt;&lt;p&gt;&lt;em&gt;Therefore you are not able to have overlapping asynchronous calls from a single proxy. If you want to have multiple async calls from the same client, you need to have separate proxies for each request.&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=111880"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=111880" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/pavelka/aggbug/111880.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Hannes Pavelka</dc:creator>
            <guid>http://geekswithblogs.net/pavelka/archive/2006/04/28/WSEMultiThreadingAnApplicationWithASingleProxy.aspx</guid>
            <pubDate>Fri, 28 Apr 2006 06:24:43 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/pavelka/comments/111880.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/pavelka/archive/2006/04/28/WSEMultiThreadingAnApplicationWithASingleProxy.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/pavelka/comments/commentRss/111880.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/pavelka/services/trackbacks/111880.aspx</trackback:ping>
        </item>
        <item>
            <title>Visual Studio 2005 Error : Retrieve the LoaderExceptions property for more information</title>
            <link>http://geekswithblogs.net/pavelka/archive/2006/02/19/VisualStudio2005RetrieveTheLoaderExceptionsPropertyForMoreInformation.aspx</link>
            <description>&lt;p&gt;Lately the Visual Studio 2005 Designer drives me crazy. &lt;br /&gt;When I worked with multiple Forms and Custom User Controls, it took just a while and I could not open the Design View anymore. &lt;/p&gt;&lt;p&gt;Switching to the Design view, brought up a friendly error message:&lt;br /&gt;&lt;em&gt;&lt;strong&gt;Unable to load one or more of the requested types. Retrieve the LoaderExceptions property for more information&lt;/strong&gt;&lt;br /&gt;&lt;/em&gt;First hit at google brings you to Microsoft support, where you can &lt;a href="http://www.hannes-pavelka.com/ct.ashx?id=589cb5c8-a4c3-4347-b46e-f0774ec5a5b5&amp;amp;url=http%3a%2f%2fsupport.microsoft.com%2fkb%2f912019%2fen-us"&gt;order an hotfix&lt;/a&gt; to correct this problem. The hotfix patches the Microsoft.visualstudio.design.dll. &lt;/p&gt;&lt;p&gt;If you look for other workarounds most people suggest restarting Visual Studio or Clean &amp;amp; Rebuild your solution with all Forms closed. &lt;/p&gt;&lt;p&gt;However, I found one interesting piece of information over at &lt;a href="http://www.hannes-pavelka.com/ct.ashx?id=589cb5c8-a4c3-4347-b46e-f0774ec5a5b5&amp;amp;url=http%3a%2f%2fgeekswithblogs.net%2frupreet%2farchive%2f2005%2f12%2f21%2f63740.aspx"&gt;Rupreet’s Weblog&lt;/a&gt;:&lt;br /&gt;&lt;em&gt;I believe the problem is caused by the Indexing Service locking the obj and bin files, trying to reindex their contents. Simply select your Projects folder in Explorer, go to Properties..., click the Advanced button and disable the checkbox to allow the indexing of the folder and subdirectories and files&lt;/em&gt; &lt;/p&gt;&lt;p&gt;Let’s see if this is actually true. It would be great. &lt;/p&gt;&lt;p&gt;Does anyone has ordered and applied the hotfix yet? Or any other experience how to handle this annoyance ?&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=111879"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=111879" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/pavelka/aggbug/111879.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Hannes Pavelka</dc:creator>
            <guid>http://geekswithblogs.net/pavelka/archive/2006/02/19/VisualStudio2005RetrieveTheLoaderExceptionsPropertyForMoreInformation.aspx</guid>
            <pubDate>Sun, 19 Feb 2006 15:21:01 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/pavelka/comments/111879.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/pavelka/archive/2006/02/19/VisualStudio2005RetrieveTheLoaderExceptionsPropertyForMoreInformation.aspx#feedback</comments>
            <slash:comments>19</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/pavelka/comments/commentRss/111879.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/pavelka/services/trackbacks/111879.aspx</trackback:ping>
        </item>
        <item>
            <title>Difference between Team System and Team Suite</title>
            <category>Visual Studio 2005</category>
            <link>http://geekswithblogs.net/pavelka/archive/2006/02/11/DifferenceBetweenTeamSystemAndTeamSuite.aspx</link>
            <description>&lt;p&gt;&lt;strong&gt;Are Team System and Team Suite the same thing?&lt;/strong&gt; &lt;/p&gt;&lt;p&gt;No, they are not. Let me explain the difference between Team System and Team Suite. &lt;/p&gt;&lt;p&gt;As you might know, a level above the Visual Studio 2005 Professional Version, you find the Visual Studio Team Editions.&lt;br /&gt;Each Team Edition offers special features, which Microsoft assumes useful, for the specific roles they identified in software development.&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;strong&gt;&lt;em&gt;Team Edition for Software Architects&lt;/em&gt;&lt;/strong&gt; provides tools for visually constructing solutions that are designed from the onset for the environments in which they will be used allowing teams to develop and deploy applications faster and more effectively. The modeling framework allows architects to visualize prescribed architectures and network infrastructures.&lt;/p&gt; &lt;p&gt;&lt;em&gt;&lt;strong&gt;Team Edition for Software Developers&lt;/strong&gt;&lt;/em&gt; provides advanced development tools that enable teams to incorporate quality, early and often throughout the life cycle. Performance analysis tools measure, evaluate, and target performance-related issues in code, helping identify performance bottle-necks early on. &lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;em&gt;Team Edition for Software Testers&lt;/em&gt;&lt;/strong&gt; introduces a set of test tools that are integrated into the Visual Studio environment that help you build high quality applications. The test management tools allow testers to author, execute, and manage tests and related work items all from within Visual Studio &lt;/p&gt;&lt;p&gt;So now Team Suite simply is the unification of all those 3 products. Simply speaking if you install Team Suite you have access to all the features from with the IDE.  &lt;/p&gt;&lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/pavelka/WindowsLiveWriter/DifferencebetweenTeamSystemandTeamSuite_10BBE/teamsuite_small%5B3%5D.jpg" atomicselection="true"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="303" src="http://geekswithblogs.net/images/geekswithblogs_net/pavelka/WindowsLiveWriter/DifferencebetweenTeamSystemandTeamSuite_10BBE/teamsuite_small_thumb%5B1%5D.jpg" width="500" border="0" /&gt;&lt;/a&gt;  &lt;/p&gt;&lt;p&gt;&lt;strong&gt;The Visual Team Sytem Edition&lt;/strong&gt; does include the Team Suite but has  to offer two more products: &lt;/p&gt;&lt;p&gt;&lt;em&gt;&lt;strong&gt;The Team Foundation Server&lt;/strong&gt;&lt;/em&gt; is what powers the collaboration aspects of the Visual Studio Team System. When used in conjunction with Visual Studio Team System, Team Foundation Server enable you to effortlessly manage and track the progress and health of your projects.&lt;br /&gt;Some great features of Team Foundation Server are &lt;/p&gt;&lt;ul&gt; &lt;li&gt; &lt;p&gt;Version Control &lt;/p&gt; &lt;/li&gt;&lt;li&gt; &lt;p&gt;Work Item Tracking &lt;/p&gt; &lt;/li&gt;&lt;li&gt; &lt;p&gt;Reporting &lt;/p&gt; &lt;/li&gt;&lt;li&gt; &lt;p&gt;Build &lt;/p&gt; &lt;/li&gt;&lt;li&gt; &lt;p&gt;Team Communication &lt;/p&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;strong&gt;&lt;em&gt;The Team Test Load Agent&lt;/em&gt;&lt;/strong&gt; generates supplemental test load for use with Visual Studio 2005 Team Edition for Software Testers that enables organizations to simulate more users and more accurately test the performance of Web applications and servers &lt;/p&gt;&lt;p&gt;To summarize the above: With Team Suite you install all the roles you find in a software development cycle. With Team System, especially with Team Foundation Server you will connect all those roles and enhance how they work together.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=111878"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=111878" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/pavelka/aggbug/111878.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Hannes Pavelka</dc:creator>
            <guid>http://geekswithblogs.net/pavelka/archive/2006/02/11/DifferenceBetweenTeamSystemAndTeamSuite.aspx</guid>
            <pubDate>Sat, 11 Feb 2006 14:19:11 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/pavelka/comments/111878.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/pavelka/archive/2006/02/11/DifferenceBetweenTeamSystemAndTeamSuite.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/pavelka/comments/commentRss/111878.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/pavelka/services/trackbacks/111878.aspx</trackback:ping>
        </item>
        <item>
            <title>How to create a global exception handler for a Web Service</title>
            <link>http://geekswithblogs.net/pavelka/archive/2005/09/05/HowToCreateAGlobalExceptionHandlerForAWebService.aspx</link>
            <description>&lt;p&gt;If you are developing ASP.NET you can easily use the &lt;strong&gt;Application_Error&lt;/strong&gt; event within the Global.asax Syntax file for your global exception handling needs.  &lt;/p&gt;&lt;p&gt;However, this approach is not available for Web Services applications. The Application_Error event is not fired if your web method throws an exception. The reason for this is that the HTTP handler for XML Web services consumes any exception that occurs while an XML Web service is executing and turns it into a SOAP fault prior to the Application_Error &lt;br /&gt;event is called.  &lt;/p&gt;&lt;p&gt;To achieve global exception handling you have to build a SOAP extension. The SOAP extension can check for the existence of an exception in the ProcessMessage method.  &lt;/p&gt; &lt;div class="wlWriterSmartContent" id="F2210F5F-69EB-4d4c-AFF7-B8A050E9CC72:b9efd09b-7eaf-46d2-993c-1e55325e0fac" contenteditable="false" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; width: 602px; padding-top: 0px"&gt;&lt;pre style="width:100%;;font-size:80%"&gt;&lt;div&gt;&lt;!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;class&lt;/span&gt;&lt;span style="color: #000000;"&gt; SoapExceptionHandler : System.Web.Services.Protocols.SoapExtension 
{ 
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;override&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;void&lt;/span&gt;&lt;span style="color: #000000;"&gt; ProcessMessage(System.Web.Services.Protocols.SoapMessage message) 
{ 
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (message.Stage &lt;/span&gt;&lt;span style="color: #000000;"&gt;==&lt;/span&gt;&lt;span style="color: #000000;"&gt; SoapMessageStage.AfterSerialize) 
{ 
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (message.Exception &lt;/span&gt;&lt;span style="color: #000000;"&gt;!=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;null&lt;/span&gt;&lt;span style="color: #000000;"&gt;) 
{ 
Logger.Write(message.Exception.InnerException); 
} 
} 
} 
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;override&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;object&lt;/span&gt;&lt;span style="color: #000000;"&gt; GetInitializer(Type serviceType) 
{ 
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;null&lt;/span&gt;&lt;span style="color: #000000;"&gt;; 
} 
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;override&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;object&lt;/span&gt;&lt;span style="color: #000000;"&gt; GetInitializer(LogicalMethodInfo methodInfo,
 SoapExtensionAttribute attribute) 
{ 
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;null&lt;/span&gt;&lt;span style="color: #000000;"&gt;; 
} 
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;override&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;void&lt;/span&gt;&lt;span style="color: #000000;"&gt; Initialize(&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;object&lt;/span&gt;&lt;span style="color: #000000;"&gt; initializer){ } 
}&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Obviously, you can do a lot more than just log the Exception.&lt;br /&gt;A common approch is to add or remove information to the SoapFault Message to control what data is send over to the client. However, you should override ChainStream if you plan to do so. There is a good posting called &lt;a href="http://www.hannes-pavelka.com/ct.ashx?id=db7e41fc-5e6b-437f-8a56-d3922b9d22e4&amp;amp;url=http%3a%2f%2fhyperthink.net%2fblog%2fInside%2bOf%2bChainStream.aspx"&gt;Inside Of Chain Stream&lt;/a&gt;. The ChainStream methods allows your SOAP extension to access to the memory buffer containing the SOAP response.&lt;br /&gt;Another good article over at &lt;a href="http://www.hannes-pavelka.com/ct.ashx?id=db7e41fc-5e6b-437f-8a56-d3922b9d22e4&amp;amp;url=http%3a%2f%2fhaacked.com%2f"&gt;haacked.com&lt;/a&gt; deals with &lt;a href="http://www.hannes-pavelka.com/ct.ashx?id=db7e41fc-5e6b-437f-8a56-d3922b9d22e4&amp;amp;url=http%3a%2f%2fhaacked.com%2farchive%2f2005%2f06%2f29%2fExceptionInjectionUsingCustomSoapExtension.aspx"&gt;excpetion injection using custom soap extensions&lt;/a&gt; or take a look at Jan Tielens &lt;a href="http://www.hannes-pavelka.com/ct.ashx?id=db7e41fc-5e6b-437f-8a56-d3922b9d22e4&amp;amp;url=http%3a%2f%2fwww.microsoft.com%2fbelux%2ffr%2fmsdn%2fcommunity%2fcolumns%2fjtielens%2fsoapexceptions.mspx"&gt;Throwing SoapExceptions&lt;/a&gt; article.&lt;br /&gt;Once you have your custom soap extension you can either register it in your web.config via the &amp;lt;soapExtensionTypes&amp;gt; tag or you create an SoapExtensionAttribute to get more fine grained control about the execution of the SoapExtension.&lt;br /&gt;The Attribute would look like this: &lt;/p&gt;
&lt;div class="wlWriterSmartContent" id="F2210F5F-69EB-4d4c-AFF7-B8A050E9CC72:fd677fa1-9d04-4aa3-913c-3346595f3b65" contenteditable="false" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre style="width:100%;;font-size:80%"&gt;&lt;div&gt;&lt;!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="color: #000000;"&gt;[AttributeUsage(AttributeTargets.Method)]
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;class&lt;/span&gt;&lt;span style="color: #000000;"&gt; ExceptionHandlingAttribute : SoapExtensionAttribute
{
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;override&lt;/span&gt;&lt;span style="color: #000000;"&gt; Type ExtensionType{&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;get&lt;/span&gt;&lt;span style="color: #000000;"&gt; { &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;typeof&lt;/span&gt;&lt;span style="color: #000000;"&gt;(SoapExceptionHandler); }}
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;override&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&lt;span style="color: #000000;"&gt; Priority{&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;get&lt;/span&gt;&lt;span style="color: #000000;"&gt;{&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;;}&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;set&lt;/span&gt;&lt;span style="color: #000000;"&gt;{}}
}&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;You can apply this attribute to your XML Web service methods and thus enable your newly created SoapExtension. &lt;/p&gt;
&lt;div class="wlWriterSmartContent" id="F2210F5F-69EB-4d4c-AFF7-B8A050E9CC72:58a78587-edd6-40ac-8d02-ee8f8c054f02" contenteditable="false" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre style="width:100%;;font-size:80%"&gt;&lt;div&gt;&lt;!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="color: #000000;"&gt;[WebMethod]
[ExceptionHandling]
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;void&lt;/span&gt;&lt;span style="color: #000000;"&gt; Foo(){}
&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=111877"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=111877" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/pavelka/aggbug/111877.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Hannes Pavelka</dc:creator>
            <guid>http://geekswithblogs.net/pavelka/archive/2005/09/05/HowToCreateAGlobalExceptionHandlerForAWebService.aspx</guid>
            <pubDate>Mon, 05 Sep 2005 14:29:10 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/pavelka/comments/111877.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/pavelka/archive/2005/09/05/HowToCreateAGlobalExceptionHandlerForAWebService.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/pavelka/comments/commentRss/111877.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/pavelka/services/trackbacks/111877.aspx</trackback:ping>
        </item>
        <item>
            <title>How to manage and handle complexity using code metrics</title>
            <category>Misc</category>
            <link>http://geekswithblogs.net/pavelka/archive/2007/02/17/HowToManageAndHandleComplexityUsingCodeMetrics.aspx</link>
            <description>&lt;p&gt;Managing and reducing the complexity of your software is important. Complexity makes your software more error prone and harder to maintain.&lt;br /&gt;
I believe in this tenet and I am a disciple of the KISS (Keep it Simple, Stupid aka Keep it super simple) principle.&lt;br /&gt;
However, the obvious question at hand is: How to measure complexity and thus identify where the KISS principle is violated ? &lt;/p&gt;
&lt;p&gt;One popular method to identify complexity is to calculate the &lt;em&gt;&lt;strong&gt;Cyclomatic Complexity&lt;/strong&gt;&lt;/em&gt; (CC).  &lt;/p&gt;
&lt;p&gt;Before talking about the tools that can help to calculate the cyclomatic complexity let me briefly explain the basics around this method. &lt;/p&gt;
&lt;p&gt;This metric was developed by Thomas McCabe. He analyzed thousand of software projects and concluded that the reliability and stability of a program is strongly correlated to its control flow complexity. &lt;/p&gt;
&lt;p&gt;He introduced the following formula: &lt;/p&gt;
&lt;p&gt;&lt;em&gt;M = E - N + P &lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;M = cyclomatic complexity &lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;E = the number of edges of the graph &lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;N = the number of nodes of the graph &lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;P = the number of connected components.&lt;/em&gt; &lt;/p&gt;
&lt;p&gt;His paper describing this method in detail was published 1976. During that time flowcharts where pretty popular, obviously you don’t make much use of them today anymore. &lt;/p&gt;
&lt;p&gt;A more proper way for current projects is to calculate the cyclomatic complexity using the subsequent approach: &lt;/p&gt;
&lt;p&gt;&lt;em&gt;For each occurrence of the following keywords or symbols you add one point:&lt;br /&gt;
 if, while, for, and (&amp;amp;&amp;amp;), or ( ||) , switch&lt;/em&gt; &lt;/p&gt;
&lt;p&gt;Depending on your language syntax those keywords and symbols may vary.&lt;br /&gt;
More generally speaking, the following statements increase the complexity by one level: &lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;conditional statement &lt;/li&gt;
    &lt;li&gt;looping statement &lt;/li&gt;
    &lt;li&gt;for each logical operator used in a condition &lt;/li&gt;
    &lt;li&gt;for each case in case or switch statement&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you counted all statements add one extra point and you have your cyclomatic complexity score. &lt;/p&gt;
&lt;p&gt;Here is a simply example: &lt;/p&gt;
&lt;p&gt;public void ShowNavbar() &lt;/p&gt;
&lt;p&gt;{ &lt;/p&gt;
&lt;p&gt;IWorkspace workspace =Workspaces[WorkspaceNames.LeftWorkspace]; &lt;/p&gt;
&lt;p&gt;if (_Navbar != null) &lt;/p&gt;
&lt;p&gt;{ &lt;/p&gt;
&lt;p&gt;Items.Remove(_Navbar); &lt;/p&gt;
&lt;p&gt;} &lt;/p&gt;
&lt;p&gt;_Navbar = Items.AddNew&amp;lt;NavbarView&amp;gt;(); &lt;/p&gt;
&lt;p&gt;workspace.Show(_Navbar); &lt;/p&gt;
&lt;p&gt;} &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;br /&gt;
&lt;/strong&gt;This method has one if statement, so one point. Add the extra point and you get 2 as cc score. &lt;/p&gt;
&lt;p&gt;Let’s take a look at a few tools that do analyze your code and provide the cyclomatic complexity score. &lt;/p&gt;
&lt;p&gt;Needless to say, cyclomatic complexity is only one metric those tools offer. The other metrics (e.g Lines Of Code (LOC), perentage of comments, etc…) are equally useful and you get most out of the tools if you identify those metrics most valuable for you. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;SourceMonitor from Campwood Software&lt;/strong&gt; &lt;/p&gt;
&lt;p&gt;One of my favorite tools to collect metrics for a software project is called &lt;a href="http://www.hannes-pavelka.com/ct.ashx?id=e3b81b86-e5cb-4516-bb5b-411ecd3644c5&amp;amp;url=http%3a%2f%2fwww.campwoodsw.com%2findex.html"&gt;SourceMonitor &lt;/a&gt;from Campwood Software. &lt;/p&gt;
&lt;p&gt;&lt;a atomicselection="true" href="http://geekswithblogs.net/images/geekswithblogs_net/pavelka/WindowsLiveWriter/Howtomanageandhandlecomplexityusingcodem_BAD0/complex1_small%5B3%5D.jpg"&gt;&lt;img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height="93" width="500" border="0" alt="" src="http://geekswithblogs.net/images/geekswithblogs_net/pavelka/WindowsLiveWriter/Howtomanageandhandlecomplexityusingcodem_BAD0/complex1_small_thumb%5B1%5D.jpg" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;As you can see from this screenshot SourceMonitor neatly display statistics about your projects including the cyclomatic complexity. &lt;/p&gt;
&lt;p&gt;Another great feature I love is the possibility to produce kiviat charts.&lt;br /&gt;
Those charts do provide an easy way of viewing your projects metrics. Shown below as an example of an Kiviat chart from my current project: &lt;/p&gt;
&lt;p&gt;&lt;a atomicselection="true" href="http://geekswithblogs.net/images/geekswithblogs_net/pavelka/WindowsLiveWriter/Howtomanageandhandlecomplexityusingcodem_BAD0/complex2_small%5B2%5D.jpg"&gt;&lt;img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height="425" width="500" border="0" alt="" src="http://geekswithblogs.net/images/geekswithblogs_net/pavelka/WindowsLiveWriter/Howtomanageandhandlecomplexityusingcodem_BAD0/complex2_small_thumb.jpg" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;With the help of the Kiviat diagram you can easily tell how well your source code meets quality guidelines for a group of metrics. You will be able to select which metrics are included in the diagram as well as the upper and lower values that should be used to define quality for each metric. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Reflector Code Metrics Addin&lt;/strong&gt; &lt;/p&gt;
&lt;p&gt;Another tool which is great for codemetrics is a &lt;a href="http://www.hannes-pavelka.com/ct.ashx?id=e3b81b86-e5cb-4516-bb5b-411ecd3644c5&amp;amp;url=http%3a%2f%2fwww.aisto.com%2fRoeder"&gt;Reflector &lt;/a&gt;Addin developed by &lt;a href="http://www.hannes-pavelka.com/ct.ashx?id=e3b81b86-e5cb-4516-bb5b-411ecd3644c5&amp;amp;url=http%3a%2f%2fblog.dotnetwiki.org%2f"&gt;Jonathan de Halleux&lt;/a&gt;. &lt;/p&gt;
&lt;p&gt;You can download it via &lt;a href="http://www.hannes-pavelka.com/ct.ashx?id=e3b81b86-e5cb-4516-bb5b-411ecd3644c5&amp;amp;url=http%3a%2f%2fprojectdistributor.net%2fProjects%2fProject.aspx%3fprojectId%3d43"&gt;projectdistributor.net&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;a atomicselection="true" href="http://geekswithblogs.net/images/geekswithblogs_net/pavelka/WindowsLiveWriter/Howtomanageandhandlecomplexityusingcodem_BAD0/complex3_small%5B3%5D.jpg"&gt;&lt;img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height="98" width="500" border="0" alt="" src="http://geekswithblogs.net/images/geekswithblogs_net/pavelka/WindowsLiveWriter/Howtomanageandhandlecomplexityusingcodem_BAD0/complex3_small_thumb%5B1%5D.jpg" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;The outstanding feature is the ability to write your own metrics without recompiling the PlugIn. &lt;/p&gt;
&lt;p&gt;You find an easy to follow explanation how to write your own metric &lt;a href="http://www.hannes-pavelka.com/ct.ashx?id=e3b81b86-e5cb-4516-bb5b-411ecd3644c5&amp;amp;url=http%3a%2f%2fblog.dotnetwiki.org%2fPermaLink%2cguid%2c8b8cd993-5c95-43b9-981d-fcbf912a48d2.aspx"&gt;here&lt;/a&gt;. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Other tools&lt;/strong&gt; &lt;/p&gt;
&lt;p&gt;Personally I have only used SourceMonitor and the reflector addin for calculating metrics. However, when talking about this posting with co-workers and friends they pointed me to some other good free products. &lt;/p&gt;
&lt;p&gt;I list them here, so you can check them out. If you know about any others drop a comment please ! &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;VIL&lt;/strong&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.hannes-pavelka.com/ct.ashx?id=e3b81b86-e5cb-4516-bb5b-411ecd3644c5&amp;amp;url=http%3a%2f%2fwww.1bot.com%2f"&gt;vil&lt;/a&gt; provides metrics, visualization, querying, and analysis of .NET assemblies, classes, and methods for all .NET languages, including C# and Visual Basic.NET &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;NDepend&lt;/strong&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.hannes-pavelka.com/ct.ashx?id=e3b81b86-e5cb-4516-bb5b-411ecd3644c5&amp;amp;url=http%3a%2f%2fsmacchia.chez-alice.fr%2fNDepend.html"&gt;NDepend&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;NDepend analyses .NET assemblies of an application and generates design quality metrics. NDepend allows you to automatically measure the quality of a design in terms of its extensibility, reusability and maintainability to effectively manage and control the assemblies’ dependencies of your .NET applications. Moreover, NDepend helps you to get a thorough view of the topology of your application, at component at type and at member level.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=111872"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=111872" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/pavelka/aggbug/111872.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Hannes Pavelka</dc:creator>
            <guid>http://geekswithblogs.net/pavelka/archive/2007/02/17/HowToManageAndHandleComplexityUsingCodeMetrics.aspx</guid>
            <pubDate>Sat, 17 Feb 2007 15:02:51 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/pavelka/comments/111872.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/pavelka/archive/2007/02/17/HowToManageAndHandleComplexityUsingCodeMetrics.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/pavelka/comments/commentRss/111872.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/pavelka/services/trackbacks/111872.aspx</trackback:ping>
        </item>
        <item>
            <title>How to determine which clr version an assembly or executable is using</title>
            <category>.NET</category>
            <link>http://geekswithblogs.net/pavelka/archive/2006/12/30/HowToDetermineWhichClrVersionAnAssemblyOrExecutableIsUsing.aspx</link>
            <description>&lt;p&gt;Let’s assume you have all (most) of the framework versions installed on your machine. &lt;br /&gt;
How can you determine which application uses which framework version ?&lt;br /&gt;
&lt;em&gt;&lt;br /&gt;
Reminder: There is plenty of information about how to determine which framework version is installed.&lt;br /&gt;
The question at hand, is about which framework version does an application actually use !&lt;br /&gt;
Microsoft published an kb about  : &lt;/em&gt;&lt;a href="http://www.hannes-pavelka.com/ct.ashx?id=7ba04466-9ac6-44e3-93cf-df6f3a18de1f&amp;amp;url=http%3a%2f%2fsupport.microsoft.com%2fkb%2f318785%2fEN-US%2f"&gt;&lt;em&gt;How to determine which versions of the .NET Framework are installed and whether service packs have been applied&lt;/em&gt;&lt;/a&gt;&lt;br /&gt;
&lt;em&gt;For your information, here is a full list of version numbers:&lt;/em&gt; &lt;/p&gt;
&lt;p&gt;&lt;a atomicselection="true" href="http://geekswithblogs.net/images/geekswithblogs_net/pavelka/WindowsLiveWriter/Howtodeterminewhichclrversionanassemblyo_AA3E/clrver%5B7%5D.jpg"&gt;&lt;img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height="183" alt="" width="500" border="0" src="http://geekswithblogs.net/images/geekswithblogs_net/pavelka/WindowsLiveWriter/Howtodeterminewhichclrversionanassemblyo_AA3E/clrver_thumb%5B3%5D.jpg" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;em&gt;However, most people just differentiate between v. 1.0/1.1 (what they mean is 1.1.4322.2032) and v 2.0 (which is 2.0.50727.42).&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;/em&gt;&lt;br /&gt;
Now back to the original question. How can you determine what framework version an application uses ?&lt;/p&gt;
&lt;p&gt;There is an tool called clrver.exe which is shipped with the SDK for .Net 2.0 , you can find the tool under &lt;em&gt;C:\Programme\Microsoft Visual Studio 8\SDK\v2.0\Bin&lt;/em&gt; &lt;/p&gt;
&lt;p&gt;If you use the clrver.exe tool without arguments you get the following output:&lt;br /&gt;
&lt;strong&gt;C:\Programme\Microsoft Visual Studio 8\VC&amp;gt;clrver.exe&lt;br /&gt;
Versions installed on the machine:&lt;br /&gt;
v2.0.50727&lt;br /&gt;
&lt;/strong&gt;You can use all / &amp;lt;pid&amp;gt; argument to get more detailed information.&lt;br /&gt;
&lt;strong&gt;-all   - Displays all processes on the machine using the CLR.&lt;br /&gt;
&amp;lt;PID&amp;gt; - Displays the version of the CLR used by the specified process.&lt;/strong&gt; &lt;/p&gt;
&lt;p&gt;Thus you can get detail information about the running processes. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3920    devenv.exe              v2.0.50727&lt;br /&gt;
2084    WebDev.WebServer.EXE    v2.0.50727&lt;br /&gt;
2944    Obab.UI.ProfessorenClientCab.vshost.exe v2.0.50727&lt;/strong&gt; &lt;/p&gt;
&lt;p&gt;Unfortunatley, you can only get the information from running applications. There is no way to let clrver.exe determine the required/used framework version from the application file itself. &lt;/p&gt;
&lt;p&gt;Over at &lt;a href="http://www.hannes-pavelka.com/ct.ashx?id=7ba04466-9ac6-44e3-93cf-df6f3a18de1f&amp;amp;url=http%3a%2f%2fwww.devfish.net%2f"&gt;Devfish &lt;/a&gt;, you find an interesting &lt;a href="http://www.hannes-pavelka.com/ct.ashx?id=7ba04466-9ac6-44e3-93cf-df6f3a18de1f&amp;amp;url=http%3a%2f%2fwww.devfish.net%2farticles%2fclrver%2farticle_CLRVer.htm"&gt;arcticle &lt;/a&gt; about the above topic and what is more important, you can even download a simple tool to determine the version information directly from a file.You pass that tool a filename and it outputs the Version information and what version of the CLR runtime the file requires. The source code for that tool can be found &lt;a href="http://www.hannes-pavelka.com/ct.ashx?id=7ba04466-9ac6-44e3-93cf-df6f3a18de1f&amp;amp;url=http%3a%2f%2fwww.devfish.net%2fdownloads%2ffiles%2fclrver.zip"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I wonder why clrver.exe does not supply this functionality out-of-the-box ?&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=111871"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=111871" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/pavelka/aggbug/111871.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Hannes Pavelka</dc:creator>
            <guid>http://geekswithblogs.net/pavelka/archive/2006/12/30/HowToDetermineWhichClrVersionAnAssemblyOrExecutableIsUsing.aspx</guid>
            <pubDate>Sat, 30 Dec 2006 06:19:51 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/pavelka/comments/111871.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/pavelka/archive/2006/12/30/HowToDetermineWhichClrVersionAnAssemblyOrExecutableIsUsing.aspx#feedback</comments>
            <slash:comments>3</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/pavelka/comments/commentRss/111871.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/pavelka/services/trackbacks/111871.aspx</trackback:ping>
        </item>
        <item>
            <title>Modify Visual Studio 2005 default new class template</title>
            <link>http://geekswithblogs.net/pavelka/archive/2006/11/24/ModifyVisualStudio2005DefaultNewClassTemplate.aspx</link>
            <description>&lt;p&gt;If you add a new item to your project, Visual Studio applies a default template which is responsible for creating the sceleton of the selected item.&lt;/p&gt; &lt;p&gt;It might come in handy to modify the default "create new item" behaviour and customize it so it fits your individual needs. The process to do so is pretty straightforward. All templates are stored in a folder called ItemTemplateCache. If you e.g. want to modify the default template for "Add new class" you need to modify the Class.cs which is located:&lt;em&gt; C:\Program Files\Microsoft Visual Studio 8\Common7\IDE\ItemTemplatesCache\CSharp\1033\Class.cs&lt;/em&gt;&lt;/p&gt; &lt;p&gt;You don’t have to worry about messing things up, you can always restore the item templates with the &lt;strong&gt;devenv /installvstemplates&lt;/strong&gt; command. It copies the item from zip files located at  &lt;/p&gt;&lt;p&gt;&lt;em&gt;C:\Program Files\Microsoft Visual Studio 8\Common7\IDE\ItemTemplates\CSharp\1033\Class.zip.&lt;/em&gt;  &lt;/p&gt;&lt;p&gt;You can ofcourse make more permanent changes, by modify the content of the zip file itself.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=111870"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=111870" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/pavelka/aggbug/111870.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Hannes Pavelka</dc:creator>
            <guid>http://geekswithblogs.net/pavelka/archive/2006/11/24/ModifyVisualStudio2005DefaultNewClassTemplate.aspx</guid>
            <pubDate>Fri, 24 Nov 2006 09:01:08 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/pavelka/comments/111870.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/pavelka/archive/2006/11/24/ModifyVisualStudio2005DefaultNewClassTemplate.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/pavelka/comments/commentRss/111870.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/pavelka/services/trackbacks/111870.aspx</trackback:ping>
        </item>
        <item>
            <title>Document outline window in Visual Studio 2005</title>
            <link>http://geekswithblogs.net/pavelka/archive/2006/11/20/VisualStudioAndTheDocumentOutlineWindow.aspx</link>
            <description>&lt;p&gt;One nice features in VS 2005 is that the Document Outline Window is available for Windows Forms. In Visual Studio 2003 it was only available for Web Forms. &lt;/p&gt;&lt;p&gt;You open the the Document Outline either via View | Other Windows | Document Outline or with the Ctrl+W,U keyboard shortcut. &lt;/p&gt;&lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/pavelka/WindowsLiveWriter/DocumentoutlinewindowinVisualStudio2005_A022/DocumentOutline_1%5B6%5D.jpg" atomicselection="true"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="74" src="http://geekswithblogs.net/images/geekswithblogs_net/pavelka/WindowsLiveWriter/DocumentoutlinewindowinVisualStudio2005_A022/DocumentOutline_1_thumb%5B4%5D.jpg" width="433" border="0" /&gt;&lt;/a&gt;  &lt;/p&gt;&lt;p&gt;The cool thing about the Document Outline Window is the ability to list all controls in a nested tree like view. Thus arranging and modifing controls is getting much easier. &lt;/p&gt;&lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/pavelka/WindowsLiveWriter/DocumentoutlinewindowinVisualStudio2005_A022/DocumentOutline2%5B2%5D.jpg" atomicselection="true"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="316" src="http://geekswithblogs.net/images/geekswithblogs_net/pavelka/WindowsLiveWriter/DocumentoutlinewindowinVisualStudio2005_A022/DocumentOutline2_thumb.jpg" width="349" border="0" /&gt;&lt;/a&gt;  &lt;/p&gt;&lt;p&gt;  You can quickly rename a specific control or edit its properties via the context menu.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=111869"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=111869" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/pavelka/aggbug/111869.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Hannes Pavelka</dc:creator>
            <guid>http://geekswithblogs.net/pavelka/archive/2006/11/20/VisualStudioAndTheDocumentOutlineWindow.aspx</guid>
            <pubDate>Mon, 20 Nov 2006 08:29:20 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/pavelka/comments/111869.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/pavelka/archive/2006/11/20/VisualStudioAndTheDocumentOutlineWindow.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/pavelka/comments/commentRss/111869.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/pavelka/services/trackbacks/111869.aspx</trackback:ping>
        </item>
        <item>
            <title>Run every program from start run</title>
            <link>http://geekswithblogs.net/pavelka/archive/2006/11/01/RunProgramFromStartRun.aspx</link>
            <description>&lt;p&gt;I start most of my application using &lt;strong&gt;start - run. T&lt;/strong&gt;his a very convenient shortcut for running applications. &lt;br /&gt;Sometimes your favorite application does not start via "start - run" or you might want to modify an existing shortcut. &lt;/p&gt;&lt;p&gt;Technically when you use the run dialog windows is executing the &lt;a href="http://www.hannes-pavelka.com/ct.ashx?id=f2c7e151-44a1-4d9f-ad65-974461f5f617&amp;amp;url=http%3a%2f%2fmsdn.microsoft.com%2flibrary%2fdefault.asp%3furl%3d%2flibrary%2fen-us%2fshellcc%2fplatform%2fshell%2freference%2ffunctions%2fshellexecute.asp"&gt;ShellExecute &lt;/a&gt;command. &lt;/p&gt;&lt;p&gt;When the method is executing there are several places that it can look in an attempt to find the file it should execute. &lt;/p&gt;&lt;p&gt;Those places are: &lt;/p&gt;&lt;li&gt;The Windows directory (no subdirectories are searched)  &lt;/li&gt;&lt;li&gt;The Windows\System32 directory  &lt;/li&gt;&lt;li&gt;Directories listed in the PATH environment variable  &lt;/li&gt;&lt;li&gt;The &lt;b&gt;App Paths&lt;/b&gt; registry key  &lt;p&gt;Applications are encouraged to use the &lt;b&gt;App Paths&lt;/b&gt; key to provide an application-specific path rather than adding to the global system path. &lt;/p&gt;&lt;p&gt;If you start regedit look at the following hive key:&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&lt;strong&gt;HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\App Paths\app.exe&lt;/strong&gt;&lt;/em&gt;&lt;br /&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/pavelka/WindowsLiveWriter/Runeveryprogramfromstartrun_9ECB/startrun_small1%5B3%5D.jpg" atomicselection="true"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="96" src="http://geekswithblogs.net/images/geekswithblogs_net/pavelka/WindowsLiveWriter/Runeveryprogramfromstartrun_9ECB/startrun_small1_thumb%5B1%5D.jpg" width="475" border="0" /&gt;&lt;/a&gt;  &lt;/p&gt;&lt;p&gt;You can adjust everthing to your needs here.&lt;/p&gt;&lt;/li&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=111868"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=111868" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/pavelka/aggbug/111868.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Hannes Pavelka</dc:creator>
            <guid>http://geekswithblogs.net/pavelka/archive/2006/11/01/RunProgramFromStartRun.aspx</guid>
            <pubDate>Wed, 01 Nov 2006 06:41:12 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/pavelka/comments/111868.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/pavelka/archive/2006/11/01/RunProgramFromStartRun.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/pavelka/comments/commentRss/111868.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/pavelka/services/trackbacks/111868.aspx</trackback:ping>
        </item>
        <item>
            <title>A smart way to do null comparison in csharp</title>
            <link>http://geekswithblogs.net/pavelka/archive/2006/09/05/ASmartWayToDoNullComparisionInCSharp.aspx</link>
            <description>&lt;p&gt;C# 2.0 offers a new null coalescing operator: ?? You can look it up in C# Language Specification (12.3.3.29).&lt;em&gt;&lt;br /&gt;&lt;/em&gt;&lt;strong&gt;&lt;br /&gt;The ?? Operator “take the first value if it is not null, otherwise the second.”&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;I consider this a pretty smart way to do some null comparision where you would usually use an if==null construct.&lt;/p&gt; &lt;p&gt;Here is a quick example:&lt;/p&gt; &lt;p&gt;string user = “Hannes”; &lt;br /&gt;Foo.bar = user ?? “unkown”;&lt;br /&gt;This will set Foo.Bar to “Hannes”.&lt;br /&gt;int? x = null;&lt;br /&gt;int? y = 2;&lt;br /&gt;int result = x ?? y;&lt;br /&gt;This will set result to 2;&lt;br /&gt;&lt;br /&gt;The operator works on nullable value types and on reference types.&lt;br /&gt;I assume if you like the tenary operator you will love the new null coalescing operator.&lt;br /&gt;The following three lines are logically identically:&lt;/p&gt; &lt;p&gt;if (s != null){ConsoleWriteLine(s);}else{ConsoleWriteLine("null");} &lt;/p&gt;&lt;p&gt;Console.WriteLine(s == null ? s : "null"); &lt;/p&gt;&lt;p&gt;Console.WriteLine(s ?? "null"); &lt;/p&gt;&lt;p&gt; &lt;/p&gt; &lt;p&gt;Nice isn't it?&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=111862"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=111862" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/pavelka/aggbug/111862.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Hannes Pavelka</dc:creator>
            <guid>http://geekswithblogs.net/pavelka/archive/2006/09/05/ASmartWayToDoNullComparisionInCSharp.aspx</guid>
            <pubDate>Tue, 05 Sep 2006 08:19:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/pavelka/comments/111862.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/pavelka/archive/2006/09/05/ASmartWayToDoNullComparisionInCSharp.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/pavelka/comments/commentRss/111862.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/pavelka/services/trackbacks/111862.aspx</trackback:ping>
        </item>
        <item>
            <title>What is the vshost.exe doing ?</title>
            <link>http://geekswithblogs.net/pavelka/archive/2006/08/11/WhatIsTheVshostExeDoing.aspx</link>
            <description>&lt;p&gt;If you are developing with Visual Studio 2005 you probably have seen the *.vshost.exe files inside of your bin folder or you saw the process running while debugging. The vshost.exe file is coming from Visual Studio and serves a very good purpose. The vshost.exe is a new Visual Studio 2005 feature and is actually a hosting process.&lt;/p&gt; &lt;p&gt;It serves mainly three purposes: &lt;/p&gt;&lt;ul&gt; &lt;li&gt;&lt;strong&gt;Improve Performance&lt;/strong&gt;&lt;br /&gt;The hosting process improves performance by handling creation of the AppDomain and initalization of the debugger.  &lt;/li&gt;&lt;li&gt;&lt;strong&gt;Allow partial trust debugging&lt;/strong&gt;&lt;br /&gt;Simulating a partial trust environment within Visual Studio requires special setup of the AppDomain. Vhost.exe takes care of this. &lt;/li&gt;&lt;li&gt;&lt;strong&gt;Allow design time expression evaluation.&lt;br /&gt;&lt;/strong&gt;Supports the &lt;a href="http://msdn2.microsoft.com/en-us/library/f177hahy.aspx"&gt;Immediate Window&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;The *.vshost.exe files are exclusively used by the VS 2005 IDE, they serve no other purpose. &lt;/p&gt;&lt;p&gt;If you want  to disable the generation of the vshost files you can do so under your projects settings. &lt;/p&gt;&lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/pavelka/WindowsLiveWriter/Whatisthevshost.exedoing_12BDF/vshost_small%5B2%5D.jpg" atomicselection="true"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="324" src="http://geekswithblogs.net/images/geekswithblogs_net/pavelka/WindowsLiveWriter/Whatisthevshost.exedoing_12BDF/vshost_small_thumb.jpg" width="425" border="0" /&gt;&lt;/a&gt;  &lt;/p&gt;&lt;p&gt;In general, when the hosting process is disabled the time needed to begin debugging increases.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=111866"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=111866" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/pavelka/aggbug/111866.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Hannes Pavelka</dc:creator>
            <guid>http://geekswithblogs.net/pavelka/archive/2006/08/11/WhatIsTheVshostExeDoing.aspx</guid>
            <pubDate>Fri, 11 Aug 2006 07:59:32 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/pavelka/comments/111866.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/pavelka/archive/2006/08/11/WhatIsTheVshostExeDoing.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/pavelka/comments/commentRss/111866.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/pavelka/services/trackbacks/111866.aspx</trackback:ping>
        </item>
        <item>
            <title>Windows Explorer and the Global Assembly Cache (GAC)</title>
            <link>http://geekswithblogs.net/pavelka/archive/2006/05/05/WindowsExplorerAndTheGlobalAssemblyCache.aspx</link>
            <description>&lt;p&gt;As you probably know shared assemblies are stored in the global assembly cache (GAC) which is located at c:\windows\assembly.If you navigate to this folder you might be surprised to see that is looks a lil different then you might expect.  &lt;/p&gt;&lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/pavelka/WindowsLiveWriter/WindowsExplorerandtheGlobalAssemblyCache_12956/gac1%5B4%5D.jpg" atomicselection="true"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="59" src="http://geekswithblogs.net/images/geekswithblogs_net/pavelka/WindowsLiveWriter/WindowsExplorerandtheGlobalAssemblyCache_12956/gac1_thumb%5B2%5D.jpg" width="420" border="0" /&gt;&lt;/a&gt;  &lt;/p&gt;&lt;p&gt;What you actually see in the windows explorer is an aggregated view of different folders. Open up a dos prompt and navigate to c:\windows\assembly &lt;/p&gt;&lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/pavelka/WindowsLiveWriter/WindowsExplorerandtheGlobalAssemblyCache_12956/gac2%5B4%5D.jpg" atomicselection="true"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="114" src="http://geekswithblogs.net/images/geekswithblogs_net/pavelka/WindowsLiveWriter/WindowsExplorerandtheGlobalAssemblyCache_12956/gac2_thumb%5B2%5D.jpg" width="420" border="0" /&gt;&lt;/a&gt;  &lt;/p&gt;&lt;p&gt;Technically a shell namespace extension is used to achive this. With the help of a shell namespace extensions you can create some custom functionality for Windows Explorer. One common use is to enable Explorer to present a list of items that do not exist in one real folder, but actually reside in a number of places. The view on the folder makes it look like these items are in one place, so managing them becomes easier. &lt;/p&gt;&lt;p&gt;The shfusion.dll is used to provide the user interface you see in explorer. If you disable the namespace extensions explorer is using the default extension to display the content of the gac. &lt;/p&gt;&lt;p&gt;&lt;strong&gt;Three ways to disable the namespace extension:&lt;/strong&gt; &lt;/p&gt;&lt;p&gt;1. Rename the Desktop.ini &lt;/p&gt;&lt;p&gt;What you can’t see from the screenshot above is that there is a hidden file called Desktop.ini which is invoking the namespace extension.&lt;br /&gt;You could rename the file with the following commands: &lt;/p&gt;&lt;p&gt;attrib desktop.ini -h -r -s&lt;br /&gt;rename desktop.ini desktop.ini.bak &lt;/p&gt;&lt;p&gt;2. Add DisableCacheViewer Registry Key &lt;/p&gt;&lt;p&gt;Another way to disable to create a new dword key under HKLM\Software\Microsoft\Fusion\ with the nane DisableCacheViewer and set it’s [DWORD] value to 1. &lt;/p&gt;&lt;p&gt;3. Rename the Shfusion.dll &lt;/p&gt;&lt;p&gt;Last but not least you could rename the Shfusion.dll which is located in the %windir%\Microsoft.NET\Framework\vx.x.&lt;i&gt;xxxx&lt;/i&gt; folder, where &lt;i&gt;xxxx&lt;/i&gt; is the build number of the .NET Framework you are using. &lt;/p&gt;&lt;p&gt;&lt;strong&gt;Plain old explorer view&lt;/strong&gt; &lt;/p&gt;&lt;p&gt;If you open windows explorer after one of the above procedures you will see your familiar folder structure. &lt;/p&gt;&lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/pavelka/WindowsLiveWriter/WindowsExplorerandtheGlobalAssemblyCache_12956/gac3%5B5%5D.jpg" atomicselection="true"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="84" src="http://geekswithblogs.net/images/geekswithblogs_net/pavelka/WindowsLiveWriter/WindowsExplorerandtheGlobalAssemblyCache_12956/gac3_thumb%5B1%5D.jpg" width="420" border="0" /&gt;&lt;/a&gt;  &lt;/p&gt;&lt;p&gt;&lt;strong&gt; &lt;/strong&gt;Once you disabled the namespace extension you no longer have drag and drop support for installing assemblies to the gac. Thus you probably want to re-enable the namespace extension once you have looked around.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=111865"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=111865" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/pavelka/aggbug/111865.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Hannes Pavelka</dc:creator>
            <guid>http://geekswithblogs.net/pavelka/archive/2006/05/05/WindowsExplorerAndTheGlobalAssemblyCache.aspx</guid>
            <pubDate>Fri, 05 May 2006 11:19:04 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/pavelka/comments/111865.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/pavelka/archive/2006/05/05/WindowsExplorerAndTheGlobalAssemblyCache.aspx#feedback</comments>
            <slash:comments>3</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/pavelka/comments/commentRss/111865.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/pavelka/services/trackbacks/111865.aspx</trackback:ping>
        </item>
        <item>
            <title>ClickOnce fails with Firefox and other alternative browsers</title>
            <category>.NET</category>
            <link>http://geekswithblogs.net/pavelka/archive/2005/11/22/60873.aspx</link>
            <description>&lt;p&gt;&lt;/p&gt; &lt;p&gt;As you might know Click Once &lt;strong&gt;does not &lt;/strong&gt;support Firefox, to be more specific ClickOnce even requires IE to be your default browser to work 100%.&lt;br /&gt;There are a few workarounds available: &lt;/p&gt;&lt;ul&gt; &lt;li&gt;&lt;em&gt;&lt;strong&gt;use IE for installing the Click Once application&lt;/strong&gt;&lt;/em&gt;.&lt;br /&gt;This sounds a bit odd, but is probably is the easiest solution. If Firefox is your default browser you might still be able to install a click once app by using IE.&lt;br /&gt;The problem: If your Application carries a bootstrapper along with it to install prerequisites before the actual ClickOnce install, then it might not work.&lt;br /&gt;Workaround here: &lt;a href="http://channel9.msdn.com/ShowPost.aspx?PostID=138879"&gt;http://channel9.msdn.com/ShowPost.aspx?PostID=138879&lt;/a&gt; &lt;/li&gt;&lt;li&gt;&lt;strong&gt;&lt;em&gt;Install a FireFox Plugin to support ClickOnce&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;You find one here: &lt;a href="http://www.softwarepunk.com/cohelper/"&gt;http://www.softwarepunk.com/cohelper/&lt;/a&gt;&lt;br /&gt;The problem is: solution does not work for Online ClickOnce Apps.  &lt;/li&gt;&lt;li&gt;&lt;em&gt;&lt;strong&gt;Use ClickOnce Shortcuts&lt;/strong&gt;&lt;/em&gt;&lt;br /&gt;If you install an click once application ( with offline availibility ) you find a shortcut in your Startmenu. The shortcut contains all information neccessary to launch or install the application. Put such a shortcut on you server (e.g with the text “Firefox users click here) and once the users clicks it in Firefox the Open/Save dialog appears. If the users has downloaded shortcut to his local machine and run it, Click Ocne will be invoked and the app will be installed.&lt;br /&gt;The problem: solution does not work for Online ClickOnce Apps&lt;/li&gt;&lt;/ul&gt; &lt;p&gt; You find more details over at &lt;a href="http://blogs.msdn.com/saurabh/archive/2006/03/02/541988.aspx"&gt;Saurabh Pant’s blog &lt;/a&gt;. &lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=60873"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=60873" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/pavelka/aggbug/60873.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Hannes Pavelka</dc:creator>
            <guid>http://geekswithblogs.net/pavelka/archive/2005/11/22/60873.aspx</guid>
            <pubDate>Tue, 22 Nov 2005 16:07:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/pavelka/comments/60873.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/pavelka/archive/2005/11/22/60873.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/pavelka/comments/commentRss/60873.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/pavelka/services/trackbacks/60873.aspx</trackback:ping>
        </item>
    </channel>
</rss>