<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/rss2full.xsl" type="text/xsl" media="screen"?><?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/itemcontent.css" type="text/css" media="screen"?><rss xmlns:blogChannel="http://backend.userland.com/blogChannelModule" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" 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:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" version="2.0">
  <channel>
    <title>Chris Pietschmann</title>
    <description>An MVP From Wisconsin</description>
    <link>http://pietschsoft.com/</link>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <generator>BlogEngine.Net Syndication Generator 1.0.0.0 (http://dotnetblogengine.net/)</generator>
    <language>en-US</language>
    <blogChannel:blogRoll>http://pietschsoft.com/opml.axd</blogChannel:blogRoll>
    <blogChannel:blink>http://feeds.feedburner.com/simplovation</blogChannel:blink>
    <dc:creator>Chris Pietschmann</dc:creator>
    <dc:title>Chris Pietschmann</dc:title>
    <geo:lat>0.000000</geo:lat>
    <geo:long>0.000000</geo:long>
    <creativeCommons:license>http://creativecommons.org/licenses/by/3.0/</creativeCommons:license><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/crpietschmann" type="application/rss+xml" /><item>
      <title>Windows vNext (Windows 7?) Feature Ideas</title>
      <description>&lt;p&gt;
Here are some of my thoughts on the Windows operating system and how thing could be improved in the &amp;quot;next&amp;quot; version after Vista. Also, the ideas aren&amp;#39;t in any particular order of importance, they are just in the order I typed them in.
&lt;/p&gt;
&lt;h3&gt;1) Make the Desktop version of Windows more Modular, like Windows Server 2008 &lt;/h3&gt;
&lt;p&gt;
Windows Server 2008 is more modular, you can install Server Core that doesn&amp;#39;t even have a graphical interface, or you can install Windows Server 2008 with just the features you want/need. Why not make a Desktop version of the OS like that? Let the advanced users, during installation or from the Programs/Features Dialog, decide which features they want to install. Currently, Windows Vista Ultimate could be considered a little bloated, and the extra features installed that I don&amp;#39;t use are just taking up space, and some run in memory affecting my system performance. For instance, If I don&amp;#39;t want or use Windows Media Center, then don&amp;#39;t install it, it&amp;#39;s not required for Windows to run. 
&lt;/p&gt;
&lt;h3&gt;2) Improve Data CD/DVD Burning, make it usable&lt;br /&gt;
&lt;/h3&gt;
&lt;p&gt;
Since WinXP, we&amp;#39;ve had Data CD burning capabilities. It hasn&amp;#39;t been the best functioning, and IMO is too slow to use. I actually use a Free burning program called Deep Burner to burn data discs, and its&amp;#39; performance is much faster. This is an area in Windows that needs improvement, and since the functionality is already baked into Windows, why not improve it to be the best it can be?
&lt;/p&gt;
&lt;h3&gt;3) Add Mount ISO and Burn ISO Support&lt;/h3&gt;
&lt;p&gt;
Developers and Sys Admins get ISO images from their MSDN subscriptions and elsewhere quite often, so why not make it easier on us by adding the capabilities to 1) Mount an ISO image to a Virtual Drive, and 2) Add support for burning ISO images to Disk. These features would make things much simpler, and such often used functionality should just be baked into the OS.
&lt;/p&gt;
&lt;h3&gt;4) Add Blu-Ray Burning Support&lt;/h3&gt;
&lt;p&gt;
Lets face it, our backup needs are growing in size. When I backup my data I need to use multiple writable DVD&amp;#39;s to back everything up. Soon enough, Blu-Ray burners and media will drop in price enough to make them practical to use for backups. Since that will happen in the next couple years, why not add support for it to the OS?
&lt;/p&gt;
&lt;h3&gt;5) Custom Themes and Visual Styles&lt;br /&gt;
&lt;/h3&gt;
&lt;p&gt;
It&amp;#39;s nice to have a consistent look and feel for Windows, especially for branding. But, why not add customizability to Windows for users to design and use their own Visual Styles and Themes? It would make Windows more enjoyable to use, since you could change the look of it to match your personality and preference. Or, alternatively a bunch more (like 10 or more) Visual Styles could be baked into Windows for the users to choose from. This feature idea is all about personality.
&lt;/p&gt;
&lt;h3&gt;6) Decouple Internet Explorer from the OS&lt;/h3&gt;
&lt;p&gt;
It sure would be nice if you could have multiple versions of Internet Explorer installed on the same machine, at least from a developer/designer perspective. By decoupling IE from the OS, it would also enable you to uninstall Internet Explorer completely if you choose. Give a little more freedom to the user as to which web browser&amp;#39;s they want to use and install.
&lt;/p&gt;
&lt;p&gt;
This also goes along with the ability for full debugging of ASP.NET web applications within other non-IE browsers from Visual Studio, but this is really a seperate idea that&amp;#39;s more a suggestion for the next version of Visual Studio. 
&lt;/p&gt;
&lt;h3&gt;7) Integrate Hyper-V into the Desktop Version of Windows&lt;/h3&gt;
&lt;p&gt;
Virtualization is a technology that is not only valuable for Server Virtualization, but also for Desktop Virtualization for Developers. Yes, you can install Windows Server 2008 on your development machine and then use Hyper-V for virtualizing dev/test environments, but if you don&amp;#39;t have an MSDN Subscription the Windows Server 2008 license can be expensive. Why not add Hyper-V to the Desktop Version of Windows, so developers can utilize it on their workstations and completely get rid of Virtual PC 2007?? Also, it sure would be nice to use Hyper-V on the same machine that I use Media Center on... After all, I use one pc for EVERYTHING! 
&lt;/p&gt;
&lt;h3&gt;8) Add Basic Virus Scanner&lt;/h3&gt;
&lt;p&gt;
Let&amp;#39;s face it, almost every pc has some kind of Virus scanner installed. Windows already has a Spyware scanner called Windows Defender. Being an advanced user and developer, I just don&amp;#39;t get spyware on my machine, but the average user does. A worse thing that the average user also gets are Virus&amp;#39;s, and they are much worse than Spyware. Why not add a new Virus scanning tool to the next version of Windows? After all, it will help make it an even more secure OS, right? One critical thing with this is, give the option to disable or completely uninstall the Virus scanner for those who want to use a different one, or none at all.
&lt;/p&gt;
&lt;p&gt;
Here&amp;#39;s a little secret, I haven&amp;#39;t had a Virus scanner installed on my machine in over 2 years. I am very carefull about what I download/run, and have learned to be this way from getting burned over the years. I also do not download warez, which from my experience is the same as unprotected sex with a complete stranger. I have a second machine that I let anyone that comes over use, and it doesn&amp;#39;t have a Virus scanner also, but I don&amp;#39;t let anyone run as Administrator on that box either. I could argue that you don&amp;#39;t need a virus scanner, but the truth is most user (the average computer user) does! 
&lt;/p&gt;
&lt;h3&gt;
9) More Sidebar Plugins Baked into Windows&lt;/h3&gt;
&lt;p&gt;
There need to be more Sidebar plugins baked into Windows.&amp;nbsp; Yes, you can go online and download more, but why not have Windows come with more usefull ones? For example, I was initially surprised that Vista didn&amp;#39;t come with Media Player or Live Messenger Sidebar Plugins.
&lt;/p&gt;
&lt;h3&gt;10) Isn&amp;#39;t it about time MS Paint gets an overhaul??&lt;br /&gt;
&lt;/h3&gt;
&lt;p&gt;
The functionality in MS Paint hasn&amp;#39;t changed since Windows 95! There&amp;#39;s a Free app called &lt;a href="http://getpaint.net"&gt;Paint.NET&lt;/a&gt; that is just plain awesome! Why not integrate a nicer image editing application into Windows? 
&lt;/p&gt;
&lt;br /&gt;
&lt;br /&gt;
Ok, there&amp;#39;s the first 10 things I could think of at the moment of how to improve Windows. If you have any other ideas, please post a comment, I&amp;#39;d be interesting in hearing them.&lt;br /&gt;
&lt;script type='text/javascript' src='http://pietschsoft.com/js/se_hilite.js'&gt;&lt;/script&gt;
&lt;p&gt;&lt;a href="http://feedads.googleadservices.com/~a/u_vQtpIYWteE286QFvIMaS6Difk/a"&gt;&lt;img src="http://feedads.googleadservices.com/~a/u_vQtpIYWteE286QFvIMaS6Difk/i" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feeds.feedburner.com/~a/crpietschmann?a=mULgnS"&gt;&lt;img src="http://feeds.feedburner.com/~a/crpietschmann?i=mULgnS" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/crpietschmann?a=I7XQL"&gt;&lt;img src="http://feeds.feedburner.com/~f/crpietschmann?i=I7XQL" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/crpietschmann?a=5jUml"&gt;&lt;img src="http://feeds.feedburner.com/~f/crpietschmann?i=5jUml" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/crpietschmann?a=5HXvl"&gt;&lt;img src="http://feeds.feedburner.com/~f/crpietschmann?i=5HXvl" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/crpietschmann/~4/384294351" height="1" width="1"/&gt;</description>
      <link>http://pietschsoft.com/post/2008/09/Windows-vNext-(Windows-7)-Feature-Ideas.aspx</link>
      <author>crpietschmann</author>
      <comments>http://pietschsoft.com/post/2008/09/Windows-vNext-(Windows-7)-Feature-Ideas.aspx#comment</comments>
      <guid>http://pietschsoft.com/post.aspx?id=fd819a8b-25ac-42df-b9fe-7bd3eb724c1a</guid>
      <pubDate>Fri, 05 Sep 2008 10:42:00 -0700</pubDate>
      <category>General</category>
      <dc:publisher>crpietschmann</dc:publisher>
      <pingback:server>http://pietschsoft.com/pingback.axd</pingback:server>
      <pingback:target>http://pietschsoft.com/post.aspx?id=fd819a8b-25ac-42df-b9fe-7bd3eb724c1a</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://pietschsoft.com/trackback.axd?id=fd819a8b-25ac-42df-b9fe-7bd3eb724c1a</trackback:ping>
      <wfw:comment>http://pietschsoft.com/post/2008/09/Windows-vNext-(Windows-7)-Feature-Ideas.aspx#comment</wfw:comment>
      <wfw:commentRss>http://pietschsoft.com/syndication.axd?post=fd819a8b-25ac-42df-b9fe-7bd3eb724c1a</wfw:commentRss>
    </item>
    <item>
      <title>Custom Themes in ASP.NET MVC Updated for Preview 5</title>
      <description>&lt;img src="http://pietschsoft.com/image.axd?picture=ASPNETMVC_Preview4_CustomThemeFolderLayout.png" alt="" align="right" /&gt;
&lt;p&gt;
About two weeks ago I posted on how to &lt;a href="http://pietschsoft.com/post.aspx?id=ee0e253d-c746-4099-9795-81aaf14ad608"&gt;Implement Custom Theme support in ASP.NET MVC&lt;/a&gt;. There were some breaking changes made when the Preview 5 release was released yesterday.
&lt;/p&gt;
&lt;p&gt;
Here&amp;#39;s a short list to a couple of the changes I had to make to my code from the previous post to get it working in ASP.NET MVC Preview 5:
&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Delete WebFormThemeViewLocator - The contents of this object is now contained within the ViewEngine itself&lt;/li&gt;
	&lt;li&gt;Delete WebFormThemeControllerFactory- This isn&amp;#39;t needed anymore.&lt;/li&gt;
	&lt;li&gt;Modify WebFormThemeViewEngine - Write a bunch of code that finds the appropriate View to use.&lt;/li&gt;
	&lt;li&gt;Modify Global.asax - Remove code that adds the old ControllerFactory, and replace it with code that adds our newly improved WebFormThemeViewEngine&lt;/li&gt;
	&lt;li&gt;Modify ControllerBase - Firstly, rename this to ThemeControllerBase since there is not a ControllerBase in System.Web.Mvc. Then, modify the code for the Execute method since it now takes in a RequestContext object as a parameter instead of a ControllerContext object. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Just for reference here&amp;#39;s the code for the WebFormThemeViewEngine.
&lt;/p&gt;
&lt;p&gt;
Download Code:
&lt;a rel="enclosure" href="http://pietschsoft.com/file.axd?file=ASPNETMVC_Preview5_CustomThemeImplementation.zip"&gt;ASPNETMVC_Preview5_CustomThemeImplementation.zip (226.05 kb)&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
Below is the entire code for the WebFormThemeViewEngine, just for reference. If you are interested in looking at how I implemented this, just download and check out the entire code sample at the link above.
&lt;/p&gt;
&lt;div class="code"&gt;&lt;p&gt;
&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;br /&gt;
&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Globalization;&lt;br /&gt;
&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Linq;&lt;br /&gt;
&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Web.Mvc;&lt;br /&gt;
&lt;br /&gt;
&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; WebFormThemeViewEngine : System.Web.Mvc.WebFormViewEngine&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;public&lt;/span&gt; WebFormThemeViewEngine()&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;base&lt;/span&gt;.ViewLocationFormats = &lt;span class="kwrd"&gt;new&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt;[] {&lt;br /&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;quot;~/Views/{2}/{1}/{0}.aspx&amp;quot;,&lt;br /&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;quot;~/Views/{2}/{1}/{0}.ascx&amp;quot;,&lt;br /&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;quot;~/Views/{2}/Shared/{0}.aspx&amp;quot;,&lt;br /&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;quot;~/Views/{2}/Shared/{0}.ascx&amp;quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; };&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;base&lt;/span&gt;.MasterLocationFormats = &lt;span class="kwrd"&gt;new&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt;[] {&lt;br /&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;quot;~/Views/{2}/{1}/{0}.master&amp;quot;,&lt;br /&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;quot;~/Views/{2}/Shared/{0}.master&amp;quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; };&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;base&lt;/span&gt;.PartialViewLocationFormats = &lt;span class="kwrd"&gt;new&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt;[] {&lt;br /&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;quot;~/Views/{2}/{1}/{0}.aspx&amp;quot;,&lt;br /&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;quot;~/Views/{2}/{1}/{0}.ascx&amp;quot;,&lt;br /&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;quot;~/Views/{2}/Shared/{0}.aspx&amp;quot;,&lt;br /&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;quot;~/Views/{2}/Shared/{0}.ascx&amp;quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; };&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;override&lt;/span&gt; ViewEngineResult FindView(ControllerContext controllerContext, &lt;span class="kwrd"&gt;string&lt;/span&gt; viewName, &lt;span class="kwrd"&gt;string&lt;/span&gt; masterName)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;if&lt;/span&gt; (controllerContext == &lt;span class="kwrd"&gt;null&lt;/span&gt;)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;throw&lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; ArgumentNullException(&amp;quot;controllerContext&amp;quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;if&lt;/span&gt; (&lt;span class="kwrd"&gt;string&lt;/span&gt;.IsNullOrEmpty(viewName))&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;throw&lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; ArgumentException(&amp;quot;Value &lt;span class="kwrd"&gt;is&lt;/span&gt; required.&amp;quot;, &amp;quot;viewName&amp;quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;string&lt;/span&gt; themeName = &lt;span class="kwrd"&gt;this&lt;/span&gt;.GetThemeToUse(controllerContext);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;string&lt;/span&gt;[] searchedViewLocations;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;string&lt;/span&gt;[] searchedMasterLocations;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;string&lt;/span&gt; controllerName = controllerContext.RouteData.GetRequiredString(&amp;quot;controller&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;string&lt;/span&gt; viewPath = &lt;span class="kwrd"&gt;this&lt;/span&gt;.GetPath(&lt;span class="kwrd"&gt;this&lt;/span&gt;.ViewLocationFormats, viewName, controllerName, themeName, &lt;span class="kwrd"&gt;out&lt;/span&gt; searchedViewLocations);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;string&lt;/span&gt; masterPath = &lt;span class="kwrd"&gt;this&lt;/span&gt;.GetPath(&lt;span class="kwrd"&gt;this&lt;/span&gt;.MasterLocationFormats, viewName, controllerName, themeName, &lt;span class="kwrd"&gt;out&lt;/span&gt; searchedMasterLocations);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;if&lt;/span&gt; (!(&lt;span class="kwrd"&gt;string&lt;/span&gt;.IsNullOrEmpty(viewPath)) &amp;amp;&amp;amp; (!(masterPath == &lt;span class="kwrd"&gt;string&lt;/span&gt;.Empty) || &lt;span class="kwrd"&gt;string&lt;/span&gt;.IsNullOrEmpty(masterName)))&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; ViewEngineResult(&lt;span class="kwrd"&gt;this&lt;/span&gt;.CreateView(controllerContext, viewPath, masterPath));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; ViewEngineResult(searchedViewLocations.Union&amp;lt;&lt;span class="kwrd"&gt;string&lt;/span&gt;&amp;gt;(searchedMasterLocations));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;override&lt;/span&gt; ViewEngineResult FindPartialView(ControllerContext controllerContext, &lt;span class="kwrd"&gt;string&lt;/span&gt; partialViewName)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;if&lt;/span&gt; (controllerContext == &lt;span class="kwrd"&gt;null&lt;/span&gt;)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;throw&lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; ArgumentNullException(&amp;quot;controllerContext&amp;quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;if&lt;/span&gt; (&lt;span class="kwrd"&gt;string&lt;/span&gt;.IsNullOrEmpty(partialViewName))&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;throw&lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; ArgumentException(&amp;quot;Value &lt;span class="kwrd"&gt;is&lt;/span&gt; required.&amp;quot;, partialViewName);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;string&lt;/span&gt; themeName = &lt;span class="kwrd"&gt;this&lt;/span&gt;.GetThemeToUse(controllerContext);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;string&lt;/span&gt;[] searchedLocations;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;string&lt;/span&gt; controllerName = controllerContext.RouteData.GetRequiredString(&amp;quot;controller&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;string&lt;/span&gt; partialPath = &lt;span class="kwrd"&gt;this&lt;/span&gt;.GetPath(&lt;span class="kwrd"&gt;this&lt;/span&gt;.PartialViewLocationFormats, partialViewName, controllerName, themeName, &lt;span class="kwrd"&gt;out&lt;/span&gt; searchedLocations);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;if&lt;/span&gt; (&lt;span class="kwrd"&gt;string&lt;/span&gt;.IsNullOrEmpty(partialPath))&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; ViewEngineResult(searchedLocations);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; ViewEngineResult(&lt;span class="kwrd"&gt;this&lt;/span&gt;.CreatePartialView(controllerContext, partialPath));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; GetThemeToUse(ControllerContext controllerContext)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;string&lt;/span&gt; themeName = controllerContext.HttpContext.Items[&amp;quot;themeName&amp;quot;] &lt;span class="kwrd"&gt;as&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;if&lt;/span&gt; (themeName == &lt;span class="kwrd"&gt;null&lt;/span&gt;) themeName = &amp;quot;Default&amp;quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;return&lt;/span&gt; themeName;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; GetPath(&lt;span class="kwrd"&gt;string&lt;/span&gt;[] locations, &lt;span class="kwrd"&gt;string&lt;/span&gt; viewName, &lt;span class="kwrd"&gt;string&lt;/span&gt; controllerName, &lt;span class="kwrd"&gt;string&lt;/span&gt; themeName, &lt;span class="kwrd"&gt;out&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt;[] searchedLocations)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;string&lt;/span&gt; path = &lt;span class="kwrd"&gt;null&lt;/span&gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; searchedLocations = &lt;span class="kwrd"&gt;new&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt;[locations.Length];&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = 0; i &amp;lt; locations.Length; i++)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; path = &lt;span class="kwrd"&gt;string&lt;/span&gt;.Format(CultureInfo.InvariantCulture, locations[i], &lt;span class="kwrd"&gt;new&lt;/span&gt; &lt;span class="kwrd"&gt;object&lt;/span&gt;[] { viewName, controllerName, themeName });&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;if&lt;/span&gt; (&lt;span class="kwrd"&gt;this&lt;/span&gt;.VirtualPathProvider.FileExists(path))&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&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; searchedLocations = &lt;span class="kwrd"&gt;new&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt;[0];&lt;br /&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; &lt;span class="kwrd"&gt;return&lt;/span&gt; path;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; searchedLocations[i] = path;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;null&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
} 
&lt;/p&gt;
&lt;/div&gt;&lt;script type='text/javascript' src='http://pietschsoft.com/js/se_hilite.js'&gt;&lt;/script&gt;
&lt;p&gt;&lt;a href="http://feedads.googleadservices.com/~a/5NTHJg8_MeX8V98Fru5UjEJmTVg/a"&gt;&lt;img src="http://feedads.googleadservices.com/~a/5NTHJg8_MeX8V98Fru5UjEJmTVg/i" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feeds.feedburner.com/~a/crpietschmann?a=04yHAB"&gt;&lt;img src="http://feeds.feedburner.com/~a/crpietschmann?i=04yHAB" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/crpietschmann?a=ifZvMK"&gt;&lt;img src="http://feeds.feedburner.com/~f/crpietschmann?i=ifZvMK" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/crpietschmann?a=JhgCNk"&gt;&lt;img src="http://feeds.feedburner.com/~f/crpietschmann?i=JhgCNk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/crpietschmann?a=HGbeDk"&gt;&lt;img src="http://feeds.feedburner.com/~f/crpietschmann?i=HGbeDk" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/crpietschmann/~4/378511629" height="1" width="1"/&gt;</description>
      <link>http://pietschsoft.com/post/2008/08/Custom-Themes-in-ASPNET-MVC-Updated-for-Preview-5.aspx</link>
      <author>crpietschmann</author>
      <comments>http://pietschsoft.com/post/2008/08/Custom-Themes-in-ASPNET-MVC-Updated-for-Preview-5.aspx#comment</comments>
      <guid>http://pietschsoft.com/post.aspx?id=5a6945d0-933a-4971-aac1-13dcd73711d9</guid>
      <pubDate>Fri, 29 Aug 2008 18:49:00 -0700</pubDate>
      <category>ASP.NET MVC</category>
      <dc:publisher>crpietschmann</dc:publisher>
      <pingback:server>http://pietschsoft.com/pingback.axd</pingback:server>
      <pingback:target>http://pietschsoft.com/post.aspx?id=5a6945d0-933a-4971-aac1-13dcd73711d9</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://pietschsoft.com/trackback.axd?id=5a6945d0-933a-4971-aac1-13dcd73711d9</trackback:ping>
      <wfw:comment>http://pietschsoft.com/post/2008/08/Custom-Themes-in-ASPNET-MVC-Updated-for-Preview-5.aspx#comment</wfw:comment>
      <wfw:commentRss>http://pietschsoft.com/syndication.axd?post=5a6945d0-933a-4971-aac1-13dcd73711d9</wfw:commentRss>
    </item>
    <item>
      <title>.NET 3.5 SP1: DataContractJsonSerializer Bug</title>
      <description>&lt;p&gt;
A few months ago (back in February actually) I blogged &lt;a href="http://pietschsoft.com/post/2008/02/NET-35-JSON-Serialization-using-the-DataContractJsonSerializer.aspx"&gt;showing how to use the new DataContractJsonSerializer&lt;/a&gt; to serialize your .NET objects to JSON. Everything was fine until .NET 3.5 SP1 was released. It appears that the .NET 3.5 SP1 update breaks the DataContractJsonSerializer. Using the exact &lt;a href="http://pietschsoft.com/post/2008/02/NET-35-JSON-Serialization-using-the-DataContractJsonSerializer.aspx"&gt;same code from my previous post&lt;/a&gt; that worked perfect on .NET 3.5 RTM, breaks with the following exceptions in .NET 3.5 SP1 RTM:
&lt;/p&gt;
&lt;h3&gt;First Exception &lt;/h3&gt;
&lt;p&gt;
This exception occurrs when running this code within a Console application: 
&lt;/p&gt;
&lt;p&gt;
System.MissingFieldException was unhandled&lt;br /&gt;
&amp;nbsp; Message=&amp;quot;Field not found: &amp;#39;System.Runtime.Serialization.XmlObjectSerializerContext.serializerKnownDataContracts&amp;#39;.&amp;quot;&lt;br /&gt;
&amp;nbsp; Source=&amp;quot;System.ServiceModel.Web&amp;quot;&lt;br /&gt;
&amp;nbsp; StackTrace:&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at System.Runtime.Serialization.Json.XmlObjectSerializerWriteContextComplexJson..ctor(DataContractJsonSerializer serializer, DataContract rootTypeDataContract)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at System.Runtime.Serialization.Json.DataContractJsonSerializer.InternalWriteObjectContent(XmlWriterDelegator writer, Object graph)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at System.Runtime.Serialization.Json.DataContractJsonSerializer.InternalWriteObject(XmlWriterDelegator writer, Object graph)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at System.Runtime.Serialization.XmlObjectSerializer.WriteObjectHandleExceptions(XmlWriterDelegator writer, Object graph)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at System.Runtime.Serialization.Json.DataContractJsonSerializer.WriteObject(XmlDictionaryWriter writer, Object graph)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at System.Runtime.Serialization.Json.DataContractJsonSerializer.WriteObject(Stream stream, Object graph)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at JsonSerializer_dotNet35SP1_IssueTest.JSONHelper.Serialize[T](T obj) in D:\TEST\JsonSerializer_dotNet35SP1_IssueTest\JsonSerializer_dotNet35SP1_IssueTest\Program.cs:line 56&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at JsonSerializer_dotNet35SP1_IssueTest.Program.Main(String[] args) in D:\TEST\JsonSerializer_dotNet35SP1_IssueTest\JsonSerializer_dotNet35SP1_IssueTest\Program.cs:line 22&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at System.Threading.ThreadHelper.ThreadStart()&lt;br /&gt;
&amp;nbsp; InnerException:
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Code for Console app:
&lt;/strong&gt;
&lt;/p&gt;
&lt;div class="code"&gt;&lt;p&gt;
&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;br /&gt;
&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;br /&gt;
&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Linq;&lt;br /&gt;
&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Text;&lt;br /&gt;
&lt;span class="kwrd"&gt;using&lt;/span&gt; System.IO;&lt;br /&gt;
&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Runtime.Serialization;&lt;br /&gt;
&lt;span class="rem"&gt;//using System.ServiceModel.Web;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;span class="kwrd"&gt;namespace&lt;/span&gt; JsonSerializer_dotNet35SP1_IssueTest&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; Program&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main(&lt;span class="kwrd"&gt;string&lt;/span&gt;[] args)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="rem"&gt;/// Sample code using the above helper methods&lt;br /&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="rem"&gt;/// to serialize and deserialize the Person object&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Person myPerson = &lt;span class="kwrd"&gt;new&lt;/span&gt; Person(&amp;quot;Chris&amp;quot;, &amp;quot;Pietschmann&amp;quot;, 26);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="rem"&gt;// Serialize&lt;br /&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;string&lt;/span&gt; json = JSONHelper.Serialize&amp;lt;Person&amp;gt;(myPerson);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="rem"&gt;// Deserialize&lt;br /&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; myPerson = JSONHelper.Deserialize&amp;lt;Person&amp;gt;(json); &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; [DataContract]&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; Person&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;public&lt;/span&gt; Person() { }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;public&lt;/span&gt; Person(&lt;span class="kwrd"&gt;string&lt;/span&gt; firstname, &lt;span class="kwrd"&gt;string&lt;/span&gt; lastname, &lt;span class="kwrd"&gt;int&lt;/span&gt; age)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;this&lt;/span&gt;.FirstName = firstname;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;this&lt;/span&gt;.LastName = lastname;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;this&lt;/span&gt;.Age = age;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [DataMember]&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; FirstName { get; set; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [DataMember]&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; LastName { get; set; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [DataMember]&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; Age { get; set; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; JSONHelper&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; Serialize&amp;lt;T&amp;gt;(T obj)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
System.Runtime.Serialization.Json.DataContractJsonSerializer serializer
= &lt;span class="kwrd"&gt;new&lt;/span&gt;
System.Runtime.Serialization.Json.DataContractJsonSerializer(obj.GetType());&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MemoryStream ms = &lt;span class="kwrd"&gt;new&lt;/span&gt; MemoryStream();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; serializer.WriteObject(ms, obj);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;string&lt;/span&gt; retVal = Encoding.Default.GetString(ms.ToArray());&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;return&lt;/span&gt; retVal;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; T Deserialize&amp;lt;T&amp;gt;(&lt;span class="kwrd"&gt;string&lt;/span&gt; json)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; T obj = Activator.CreateInstance&amp;lt;T&amp;gt;();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MemoryStream ms = &lt;span class="kwrd"&gt;new&lt;/span&gt; MemoryStream(Encoding.Unicode.GetBytes(json));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
System.Runtime.Serialization.Json.DataContractJsonSerializer serializer
= &lt;span class="kwrd"&gt;new&lt;/span&gt;
System.Runtime.Serialization.Json.DataContractJsonSerializer(obj.GetType());&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; obj = (T)serializer.ReadObject(ms);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ms.Close();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;return&lt;/span&gt; obj;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
}&amp;nbsp; 
&lt;/p&gt;
&lt;/div&gt;&lt;h3&gt;Second Exception &lt;/h3&gt;
&lt;p&gt;
This exception occurrs when running this code within an ASP.NET WebPage: 
&lt;/p&gt;
&lt;p&gt;
System.MissingMethodException was unhandled by user code&lt;br /&gt;
&amp;nbsp; Message=&amp;quot;Method not found: &amp;#39;Boolean System.Runtime.Serialization.DataContract.get_IsReference()&amp;#39;.&amp;quot;&lt;br /&gt;
&amp;nbsp; Source=&amp;quot;System.ServiceModel.Web&amp;quot;&lt;br /&gt;
&amp;nbsp; StackTrace:&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at System.Runtime.Serialization.Json.DataContractJsonSerializer.CheckIfTypeIsReference(DataContract dataContract)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at System.Runtime.Serialization.Json.DataContractJsonSerializer.get_RootContract()&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at System.Runtime.Serialization.Json.DataContractJsonSerializer.InternalWriteObjectContent(XmlWriterDelegator writer, Object graph)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at System.Runtime.Serialization.Json.DataContractJsonSerializer.InternalWriteObject(XmlWriterDelegator writer, Object graph)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at System.Runtime.Serialization.XmlObjectSerializer.WriteObjectHandleExceptions(XmlWriterDelegator writer, Object graph)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at System.Runtime.Serialization.Json.DataContractJsonSerializer.WriteObject(XmlDictionaryWriter writer, Object graph)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at System.Runtime.Serialization.Json.DataContractJsonSerializer.WriteObject(Stream stream, Object graph)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at _Default.JSONHelper.Serialize[T](T obj) in d:\TEST\JsonSerializer_dotNet35SP1_IssueTest_ASPNET\Default.aspx.cs:line 55&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at _Default.Page_Load(Object sender, EventArgs e) in d:\TEST\JsonSerializer_dotNet35SP1_IssueTest_ASPNET\Default.aspx.cs:line 22&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at System.Web.UI.Control.OnLoad(EventArgs e)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at System.Web.UI.Control.LoadRecursive()&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)&lt;br /&gt;
&amp;nbsp; InnerException: 
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Code for ASP.NET app:&lt;/strong&gt;
&lt;/p&gt;
&lt;div class="code"&gt;&lt;p&gt;
&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;br /&gt;
&lt;span class="kwrd"&gt;using&lt;/span&gt; System.IO;&lt;br /&gt;
&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Runtime.Serialization;&lt;br /&gt;
&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Text;&lt;br /&gt;
&lt;br /&gt;
&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;partial&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; _Default : System.Web.UI.Page &lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;protected&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Page_Load(&lt;span class="kwrd"&gt;object&lt;/span&gt; sender, EventArgs e)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="rem"&gt;/// Sample code using the above helper methods&lt;br /&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="rem"&gt;/// to serialize and deserialize the Person object&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Person myPerson = &lt;span class="kwrd"&gt;new&lt;/span&gt; Person(&amp;quot;Chris&amp;quot;, &amp;quot;Pietschmann&amp;quot;, 26);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="rem"&gt;// Serialize&lt;br /&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;string&lt;/span&gt; json = JSONHelper.Serialize&amp;lt;Person&amp;gt;(myPerson);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="rem"&gt;// Deserialize&lt;br /&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; myPerson = JSONHelper.Deserialize&amp;lt;Person&amp;gt;(json);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; [DataContract]&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; Person&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;public&lt;/span&gt; Person() { }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;public&lt;/span&gt; Person(&lt;span class="kwrd"&gt;string&lt;/span&gt; firstname, &lt;span class="kwrd"&gt;string&lt;/span&gt; lastname, &lt;span class="kwrd"&gt;int&lt;/span&gt; age)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;this&lt;/span&gt;.FirstName = firstname;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;this&lt;/span&gt;.LastName = lastname;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;this&lt;/span&gt;.Age = age;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [DataMember]&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; FirstName { get; set; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [DataMember]&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; LastName { get; set; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [DataMember]&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; Age { get; set; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; JSONHelper&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; Serialize&amp;lt;T&amp;gt;(T obj)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Runtime.Serialization.Json.DataContractJsonSerializer serializer = &lt;span class="kwrd"&gt;new&lt;/span&gt; System.Runtime.Serialization.Json.DataContractJsonSerializer(obj.GetType());&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MemoryStream ms = &lt;span class="kwrd"&gt;new&lt;/span&gt; MemoryStream();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; serializer.WriteObject(ms, obj);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;string&lt;/span&gt; retVal = Encoding.Default.GetString(ms.ToArray());&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;return&lt;/span&gt; retVal;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; T Deserialize&amp;lt;T&amp;gt;(&lt;span class="kwrd"&gt;string&lt;/span&gt; json)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; T obj = Activator.CreateInstance&amp;lt;T&amp;gt;();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MemoryStream ms = &lt;span class="kwrd"&gt;new&lt;/span&gt; MemoryStream(Encoding.Unicode.GetBytes(json));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Runtime.Serialization.Json.DataContractJsonSerializer serializer = &lt;span class="kwrd"&gt;new&lt;/span&gt; System.Runtime.Serialization.Json.DataContractJsonSerializer(obj.GetType());&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; obj = (T)serializer.ReadObject(ms);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ms.Close();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;return&lt;/span&gt; obj;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
} 
&lt;/p&gt;
&lt;/div&gt;&amp;nbsp;
&lt;h3&gt;
WTF??&lt;/h3&gt;
&lt;p&gt;
I searched for a possible solution, but the only thing I found was this link (&lt;a href="http://forums.msdn.microsoft.com/en-US/csharpgeneral/thread/37558154-88a9-41f0-a9d6-a2cb4052a5ce/"&gt;http://forums.msdn.microsoft.com/en-US/csharpgeneral/thread/37558154-88a9-41f0-a9d6-a2cb4052a5ce/&lt;/a&gt;) where someone mentions the First Exception above. The suggested solution was to use the KnownType Attribute on the object, but that doesn&amp;#39;t help with my above code. 
&lt;/p&gt;
&lt;p&gt;
Does anyone know a work around for this that doesn&amp;#39;t involve using the older JavaScriptSerializer object?
&lt;/p&gt;
&lt;p&gt;
Well, for now, it looks like I&amp;#39;m almost the only one to experience this issue. &lt;img src="/admin/tiny_mce/plugins/emotions/images/smiley-frown.gif" border="0" alt="Frown" title="Frown" /&gt;
&lt;/p&gt;
&lt;script type='text/javascript' src='http://pietschsoft.com/js/se_hilite.js'&gt;&lt;/script&gt;
&lt;p&gt;&lt;a href="http://feedads.googleadservices.com/~a/0ggqd28nqm5mckofmpjkldnupg/a"&gt;&lt;img src="http://feedads.googleadservices.com/~a/0ggqd28nqm5mckofmpjkldnupg/i" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feeds.feedburner.com/~a/crpietschmann?a=U6TPCQ"&gt;&lt;img src="http://feeds.feedburner.com/~a/crpietschmann?i=U6TPCQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/crpietschmann?a=VDwp0K"&gt;&lt;img src="http://feeds.feedburner.com/~f/crpietschmann?i=VDwp0K" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/crpietschmann?a=vJuR5k"&gt;&lt;img src="http://feeds.feedburner.com/~f/crpietschmann?i=vJuR5k" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/crpietschmann?a=Fet91k"&gt;&lt;img src="http://feeds.feedburner.com/~f/crpietschmann?i=Fet91k" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/crpietschmann/~4/376566917" height="1" width="1"/&gt;</description>
      <link>http://pietschsoft.com/post/2008/08/NET-35-SP1-DataContractJsonSerializer-Bug.aspx</link>
      <author>crpietschmann</author>
      <comments>http://pietschsoft.com/post/2008/08/NET-35-SP1-DataContractJsonSerializer-Bug.aspx#comment</comments>
      <guid>http://pietschsoft.com/post.aspx?id=ff9ab12f-8a69-4fc7-9bd8-8c5e2ee873c4</guid>
      <pubDate>Wed, 27 Aug 2008 16:47:00 -0700</pubDate>
      <category>asp.net</category>
      <dc:publisher>crpietschmann</dc:publisher>
      <pingback:server>http://pietschsoft.com/pingback.axd</pingback:server>
      <pingback:target>http://pietschsoft.com/post.aspx?id=ff9ab12f-8a69-4fc7-9bd8-8c5e2ee873c4</pingback:target>
      <slash:comments>3</slash:comments>
      <trackback:ping>http://pietschsoft.com/trackback.axd?id=ff9ab12f-8a69-4fc7-9bd8-8c5e2ee873c4</trackback:ping>
      <wfw:comment>http://pietschsoft.com/post/2008/08/NET-35-SP1-DataContractJsonSerializer-Bug.aspx#comment</wfw:comment>
      <wfw:commentRss>http://pietschsoft.com/syndication.axd?post=ff9ab12f-8a69-4fc7-9bd8-8c5e2ee873c4</wfw:commentRss>
    </item>
    <item>
      <title>CouchDB on FLOSS Weekly Episode 36 - distributed, document-oriented, RESTful database</title>
      <description>&lt;p&gt;
I just listened to the latest episode of &lt;a href="http://twit.tv/FLOSS"&gt;FLOSS Weekly&lt;/a&gt;; &lt;a href="http://twit.tv/floss36"&gt;episode 36 on CouchDB&lt;/a&gt;. This episode is an interview with &lt;a href="http://jan.prima.de/"&gt;Jan Lehnardt&lt;/a&gt; about &lt;a href="http://incubator.apache.org/couchdb/"&gt;CouchBD&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
Here&amp;#39;s a description of what CouchDB is from their website:
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;Apache CouchDB is a distributed, fault-tolerant and schema-free
document-oriented database accessible via a RESTful HTTP/JSON API. Among other
features, it provides robust, incremental replication with bi-directional
conflict detection and resolution, and is queryable and indexable using a
table-oriented view engine with JavaScript acting as the default view
definition language.&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;CouchDB is written in &lt;a href="http://erlang.org/"&gt;Erlang&lt;/a&gt;, but can be easily accessed from any
environment that provides means to make HTTP requests. There are a multitude of
third-party client libraries that make this even easier for a variety of
programming languages and environments.&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
I haven&amp;#39;t installed or tested it out, but it looks like a really cool idea for a small efficient database design. I always find it interesting to hear about some of these cool &amp;quot;new&amp;quot; projects that look at everyday problems in new and different ways. 
&lt;/p&gt;
&lt;script type='text/javascript' src='http://pietschsoft.com/js/se_hilite.js'&gt;&lt;/script&gt;
&lt;p&gt;&lt;a href="http://feedads.googleadservices.com/~a/f4m874ktvpeo6j3u3q26b3pcc8/a"&gt;&lt;img src="http://feedads.googleadservices.com/~a/f4m874ktvpeo6j3u3q26b3pcc8/i" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feeds.feedburner.com/~a/crpietschmann?a=FUeb20"&gt;&lt;img src="http://feeds.feedburner.com/~a/crpietschmann?i=FUeb20" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/crpietschmann?a=zpdOEK"&gt;&lt;img src="http://feeds.feedburner.com/~f/crpietschmann?i=zpdOEK" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/crpietschmann?a=ev981k"&gt;&lt;img src="http://feeds.feedburner.com/~f/crpietschmann?i=ev981k" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/crpietschmann?a=Ifmitk"&gt;&lt;img src="http://feeds.feedburner.com/~f/crpietschmann?i=Ifmitk" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/crpietschmann/~4/370402609" height="1" width="1"/&gt;</description>
      <link>http://pietschsoft.com/post/2008/08/CouchDB-on-FLOSS-Weekly-Episode-36-distributed-document-oriented-RESTful-database.aspx</link>
      <author>crpietschmann</author>
      <comments>http://pietschsoft.com/post/2008/08/CouchDB-on-FLOSS-Weekly-Episode-36-distributed-document-oriented-RESTful-database.aspx#comment</comments>
      <guid>http://pietschsoft.com/post.aspx?id=09be9ffa-1694-4558-a7ad-47464a65a548</guid>
      <pubDate>Wed, 20 Aug 2008 17:46:00 -0700</pubDate>
      <category>General</category>
      <dc:publisher>crpietschmann</dc:publisher>
      <pingback:server>http://pietschsoft.com/pingback.axd</pingback:server>
      <pingback:target>http://pietschsoft.com/post.aspx?id=09be9ffa-1694-4558-a7ad-47464a65a548</pingback:target>
      <slash:comments>1</slash:comments>
      <trackback:ping>http://pietschsoft.com/trackback.axd?id=09be9ffa-1694-4558-a7ad-47464a65a548</trackback:ping>
      <wfw:comment>http://pietschsoft.com/post/2008/08/CouchDB-on-FLOSS-Weekly-Episode-36-distributed-document-oriented-RESTful-database.aspx#comment</wfw:comment>
      <wfw:commentRss>http://pietschsoft.com/syndication.axd?post=09be9ffa-1694-4558-a7ad-47464a65a548</wfw:commentRss>
    </item>
    <item>
      <title>How To Setup Custom Theme Support In ASP.NET MVC Preview 4 using a Custom ViewEngine</title>
      <description>&lt;p&gt;
&lt;strong&gt;Update 8/29/2008:&lt;/strong&gt; I posted a new blog post today that contains &lt;a href="http://pietschsoft.com/post.aspx?id=5a6945d0-933a-4971-aac1-13dcd73711d9"&gt;updated code&lt;/a&gt; for this example that works with the newly released ASP.NET MVC Preview 5. The new code is located &lt;a href="http://pietschsoft.com/post.aspx?id=5a6945d0-933a-4971-aac1-13dcd73711d9"&gt;here&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
One option to do theming in ASP.NET MVC is to use the standard ASP.NET Theme functionality (App_Themes folder glory and all), but it just doesn&amp;#39;t seem complete. Also, by doing that you don&amp;#39;t get to generate completely custom HTML specific to each Theme. After all, the beauty of ASP.NET MVC is being able to completely control the HTML output of the application. So, I played around with things a bit and figured out how to create a custom ViewEngine that will allow you to create a seperate sub-folder within the Views folder for each Theme. This way you can have a completely different version of each View for each Theme, and maintain complete control over the HTML output on a per Theme basis.
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;I used the ASP.NET MVC Preview 4 release to write this article.&lt;/em&gt;
&lt;/p&gt;
&lt;img src="http://pietschsoft.com/image.axd?picture=ASPNETMVC_Preview4_CustomThemeFolderLayout.png" alt="" align="right" /&gt;
&lt;h3&gt;Create Themed Views&lt;/h3&gt;
&lt;p&gt;
First, we&amp;#39;ll make some changes to the Views contained within the default ASP.NET MVC Template.
&lt;/p&gt;
&lt;p&gt;
Here&amp;#39;s a brief summary of what changes are needed: 
&lt;/p&gt;
&lt;ol&gt;
	&lt;li&gt;Create a sub-folder named &amp;quot;Default&amp;quot; within the Views folder, and paste all the files and folders within the Views folder into this folder. This will be out &amp;quot;Default&amp;quot; theme.&lt;/li&gt;
	&lt;li&gt;Cut the Site.css file from the Content folder, and paste it into the Shared folder within the newly created &amp;quot;Default&amp;quot; theme folder.&lt;/li&gt;
	&lt;li&gt;Modify the CSS link reference in the &amp;quot;Shared/Site.Master&amp;quot; file within the &amp;quot;Default&amp;quot; theme to reference the new location for the Site.css file.&lt;/li&gt;
	&lt;li&gt;Modey all the .aspx View pages to reference the new location of the MasterPage file.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
Once, the above changes are made we have our first &amp;quot;Default&amp;quot; theme created. Now to create a new theme, just create a copy of this folder and make sure to update all the references within the files to reference the theme folder the files are contained within. 
&lt;/p&gt;
&lt;p&gt;
To the right is a screenshot displaying the layout of the Theme folders as described above. 
&lt;/p&gt;
&lt;p&gt;
In the code example attached to this article, I created a second theme
named &amp;quot;Red&amp;quot; and I changed the background color of the Site.css file to
the color Red. 
&lt;/p&gt;
&lt;h3&gt;
Create a Custom ViewEngine&lt;/h3&gt;
&lt;p&gt;
I found the following article usefull and very descriptive on creating custom ViewEngines, so I&amp;#39;m not going to re-write it. Just refer to the following link on how to &lt;a href="http://blog.maartenballiauw.be/post/2008/05/20/Creating-a-custom-ViewEngine-for-the-ASPNET-MVC-framework.aspx"&gt;create a custom ViewEngine in ASP.NET MVC&lt;/a&gt;. 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://blog.maartenballiauw.be/post/2008/05/20/Creating-a-custom-ViewEngine-for-the-ASPNET-MVC-framework.aspx"&gt;http://blog.maartenballiauw.be/post/2008/05/20/Creating-a-custom-ViewEngine-for-the-ASPNET-MVC-framework.aspx&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Instead, I&amp;#39;ll just list the code I wrote for setting up Themes and give a brief description of what it does.
&lt;/p&gt;
&lt;p&gt;
First, we need to create a ViewLocator object that will contain VirtualPath references that describe to ASP.NET MVC how to find a specified View. To make things simpler I&amp;#39;m just inheriting from the WebFormViewLocator so I don&amp;#39;t have to re-implement it&amp;#39;s entire logic. Also, one thing to note is the constructor of our WebFormThemeViewLocator object takes a string argument that is the name of the Theme it is to describe the VirtualPath references for. 
&lt;/p&gt;
&lt;div class="code"&gt;&lt;p&gt;
&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; WebFormThemeViewLocator : System.Web.Mvc.WebFormViewLocator&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;public&lt;/span&gt; WebFormThemeViewLocator(&lt;span class="kwrd"&gt;string&lt;/span&gt; themeName)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;base&lt;/span&gt;.ViewLocationFormats = &lt;span class="kwrd"&gt;new&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt;[] {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;quot;~/Views/&amp;quot; + themeName + &amp;quot;/{1}/{0}.aspx&amp;quot;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;quot;~/Views/&amp;quot; + themeName + &amp;quot;/{1}/{0}.ascx&amp;quot;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;quot;~/Views/&amp;quot; + themeName + &amp;quot;/Shared/{0}.aspx&amp;quot;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;quot;~/Views/&amp;quot; + themeName + &amp;quot;/Shared/{0}.ascx&amp;quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; };&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;base&lt;/span&gt;.MasterLocationFormats = &lt;span class="kwrd"&gt;new&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt;[] {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;quot;~/Views/&amp;quot; + themeName + &amp;quot;/{1}/{0}.master&amp;quot;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;quot;~/Views/&amp;quot; + themeName + &amp;quot;/Shared/{0}.master&amp;quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; };&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
} 
&lt;/p&gt;
&lt;/div&gt;&lt;p&gt;
Next, we need to create a custom ViewEngine. Also, in this case, I&amp;#39;m inheriting the WebFormViewEngine so I don&amp;#39;t have to re-implement it&amp;#39;s entire logic. This WebFormThemeViewEngine just overrides the RenderView method so that it can get the Theme to display from the HttpContext.Items collection and implement the new WebFormThemeViewLocator instead of the default WebFormViewLocator.
&lt;/p&gt;
&lt;div class="code"&gt;&lt;p&gt;
&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; WebFormThemeViewEngine : System.Web.Mvc.WebFormViewEngine&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;protected&lt;/span&gt; &lt;span class="kwrd"&gt;override&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; RenderView(System.Web.Mvc.ViewContext viewContext)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;string&lt;/span&gt; themeName = viewContext.HttpContext.Items[&amp;quot;themeName&amp;quot;] &lt;span class="kwrd"&gt;as&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;if&lt;/span&gt; (themeName == &lt;span class="kwrd"&gt;null&lt;/span&gt;) themeName = &amp;quot;Default&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;base&lt;/span&gt;.ViewLocator = &lt;span class="kwrd"&gt;new&lt;/span&gt; WebFormThemeViewLocator(themeName);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;base&lt;/span&gt;.RenderView(viewContext);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
} 
&lt;/p&gt;
&lt;/div&gt;&lt;p&gt;
Next, we need to create a custom ControllerFactory that we&amp;#39;ll setup ASP.NET MVC to use so we can use our custom ViewEngine. Again, I&amp;#39;m inheriting the DefaultControllerFactory so I only have to add the necessary logic to use the custom ViewEngine so I don&amp;#39;t have to re-implement it&amp;#39;s entire logic.
&lt;/p&gt;
&lt;div class="code"&gt;&lt;p&gt;
&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; WebFormThemeControllerFactory : System.Web.Mvc.DefaultControllerFactory&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;protected&lt;/span&gt; &lt;span class="kwrd"&gt;override&lt;/span&gt; System.Web.Mvc.IController CreateController(System.Web.Routing.RequestContext requestContext, &lt;span class="kwrd"&gt;string&lt;/span&gt; controllerName)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Web.Mvc.Controller controller = &lt;span class="kwrd"&gt;base&lt;/span&gt;.CreateController(requestContext, controllerName) &lt;span class="kwrd"&gt;as&lt;/span&gt; System.Web.Mvc.Controller;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; controller.ViewEngine = &lt;span class="kwrd"&gt;new&lt;/span&gt; WebFormThemeViewEngine();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;return&lt;/span&gt; controller;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
}
&lt;/p&gt;
&lt;/div&gt;&lt;p&gt;
Finally, to tell ASP.NET MVC to use the WebFormThemeControllerFactory object, and ultimately our custom ViewEngine, the following line of code needs to be added to the Application_Start event handler:
&lt;/p&gt;
&lt;div class="code"&gt;&lt;p&gt;
ControllerBuilder.Current.SetControllerFactory(&lt;span class="kwrd"&gt;typeof&lt;/span&gt;(WebFormThemeControllerFactory)); 
&lt;/p&gt;
&lt;/div&gt;&lt;h3&gt;Dynamically Determine Which Theme to Display to the User&lt;/h3&gt;
&lt;p&gt;
The way I&amp;#39;ve set things up in the above code for the custom ViewEngine, I&amp;#39;ve wired it up so that you can set the Theme to display anywhere within your Controller. This gives the most flexibility I could think of to set the Theme since you&amp;#39;ll most likely need to access a database of some kind to determine which Theme to display, and this way you can do that before, after or at the same time you get the data to display.
&lt;/p&gt;
&lt;p&gt;
Here&amp;#39;s an example of how to set the Theme to &amp;quot;Red&amp;quot;, and you can do this anywhere within one of your Action methods of your Controller.
&lt;/p&gt;
&lt;div class="code"&gt;&lt;p&gt;
controllerContext.HttpContext.Items[&amp;quot;themeName&amp;quot;] 
&lt;/p&gt;
&lt;/div&gt;&lt;p&gt;
The reason I&amp;#39;m storing the Theme Name using HttpContext.Items is so that we can access the Theme Name from a single place within both the custom ViewEngine and the View itself.
&lt;/p&gt;
&lt;p&gt;
Also, the code example attached to this article uses a ControllerBase class that each of the Controllers inherit so it&amp;#39;s more resuable, and it also grabs the Theme to display from the QueryString for simplicity.
&lt;/p&gt;
&lt;h3&gt;Sharing UI Elements Between Themes&lt;/h3&gt;
&lt;p&gt;
One thing that is done alot is sharing certain UI elements between Themes that are similar or almost identical. This can be done by creating user controls within a seperate folder than the View folder, and using/referencing them within the Pages/Views (.aspx) or Controls (.ascx) within the Themes. This way you can create shared UI elements that can be shared across multiple Themes.
&lt;/p&gt;
&lt;p&gt;
In the code attached to this article, I&amp;#39;ve created a &amp;quot;~/Controls&amp;quot; folder and placed in it a ThemeLinks.ascx control that is used by both the &amp;quot;Default&amp;quot; and &amp;quot;Red&amp;quot; themes to display links (as tabs in the top navigation bar) for you to select which Theme to see.
&lt;/p&gt;
&lt;h3&gt;Download the Code&lt;/h3&gt;
&lt;p&gt;
Ok, after reading all the above, I&amp;#39;m sure you&amp;#39;re probably a little confuses since I only gave a brief overview. Well, here&amp;#39;s the code. I started with an &lt;a href="http://pietschsoft.com/post.aspx?id=fa4fbb6a-6f47-4f43-91c1-f0ebb04544f8"&gt;ASP.NET MVC Website (as described in one of my previous posts)&lt;/a&gt; using the Preview 4 release and made all the changes described above. Have fun, and please post any comments you have on this, or any suggestions on making it better.
&lt;/p&gt;
&lt;p&gt;
Download Code: &lt;a rel="enclosure" href="http://pietschsoft.com/file.axd?file=ASPNETMVC_CustomThemeImplementation.zip"&gt;ASPNETMVC_CustomThemeImplementation.zip (207.98 kb)&lt;/a&gt;
&lt;/p&gt;
&lt;script type='text/javascript' src='http://pietschsoft.com/js/se_hilite.js'&gt;&lt;/script&gt;
&lt;p&gt;&lt;a href="http://feedads.googleadservices.com/~a/xCIUI1Vz24rfHi4Nj1BYoKuqPEY/a"&gt;&lt;img src="http://feedads.googleadservices.com/~a/xCIUI1Vz24rfHi4Nj1BYoKuqPEY/i" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feeds.feedburner.com/~a/crpietschmann?a=AYx7ti"&gt;&lt;img src="http://feeds.feedburner.com/~a/crpietschmann?i=AYx7ti" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/crpietschmann?a=yeAmpK"&gt;&lt;img src="http://feeds.feedburner.com/~f/crpietschmann?i=yeAmpK" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/crpietschmann?a=7OPkRk"&gt;&lt;img src="http://feeds.feedburner.com/~f/crpietschmann?i=7OPkRk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/crpietschmann?a=cxP2Uk"&gt;&lt;img src="http://feeds.feedburner.com/~f/crpietschmann?i=cxP2Uk" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/crpietschmann/~4/367059870" height="1" width="1"/&gt;</description>
      <link>http://pietschsoft.com/post/2008/08/How-To-Setup-Custom-Theme-Support-In-ASPNET-MVC-using-a-Custom-ViewEngine.aspx</link>
      <author>crpietschmann</author>
      <comments>http://pietschsoft.com/post/2008/08/How-To-Setup-Custom-Theme-Support-In-ASPNET-MVC-using-a-Custom-ViewEngine.aspx#comment</comments>
      <guid>http://pietschsoft.com/post.aspx?id=ee0e253d-c746-4099-9795-81aaf14ad608</guid>
      <pubDate>Sun, 17 Aug 2008 00:09:00 -0700</pubDate>
      <category>asp.net</category>
      <category>ASP.NET MVC</category>
      <dc:publisher>crpietschmann</dc:publisher>
      <pingback:server>http://pietschsoft.com/pingback.axd</pingback:server>
      <pingback:target>http://pietschsoft.com/post.aspx?id=ee0e253d-c746-4099-9795-81aaf14ad608</pingback:target>
      <slash:comments>1</slash:comments>
      <trackback:ping>http://pietschsoft.com/trackback.axd?id=ee0e253d-c746-4099-9795-81aaf14ad608</trackback:ping>
      <wfw:comment>http://pietschsoft.com/post/2008/08/How-To-Setup-Custom-Theme-Support-In-ASPNET-MVC-using-a-Custom-ViewEngine.aspx#comment</wfw:comment>
      <wfw:commentRss>http://pietschsoft.com/syndication.axd?post=ee0e253d-c746-4099-9795-81aaf14ad608</wfw:commentRss>
    </item>
    <item>
      <title>How To Use ASP.NET MVC in Website rather than Web Application Project</title>
      <description>&lt;p&gt;
&lt;img src="http://pietschsoft.com/image.axd?picture=ASPNETMVC_Preview4_WebsiteFileStructure.png" alt="" align="right" /&gt;
I recently started getting to know the ASP.NET MVC Framework (more specifically the Preview 4 release). The first thing I noticed upon installation is that it only comes with a Web Application Project Template. There is no regular ASP.NET Website template. So, I decided to try converting the Web Application Project Template to a regular ASP.NET Website. I actually prefer to use Website projects instead of Web Application projects since it gives a little more flexibility to deploy changes to the website after the website is already live. Plus, you can still throw anything you want into a DLL that goes into the Bin if you want.
&lt;/p&gt;
&lt;p&gt;
I only needed to make a couple small changes when copying over the code into a new ASP.NET Website:
&lt;/p&gt;
&lt;ol&gt;
	&lt;li&gt;Convert the .aspx pages from using CodeBehind to CodeFile.&lt;/li&gt;
	&lt;li&gt;Place the Controllers folder into the App_Code.&lt;/li&gt;
	&lt;li&gt;Change the Global.asax to be ASP.NET Website friendly (aka Not compile into DLL like in Web Application Project) &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
That&amp;#39;s pretty much it, now I have a nice ASP.NET MVC Website template that I can use. To the right is an image of the file layout of the new ASP.NET MVC Website project.
&lt;/p&gt;
&lt;p&gt;
The ASP.NET MVC release I used for this was the &lt;a href="http://www.codeplex.com/aspnet/Release/ProjectReleases.aspx?ReleaseId=15389#ReleaseFiles"&gt;ASP.NET MVC Preview 4 release available on CodePlex&lt;/a&gt;. 
&lt;/p&gt;
&lt;p&gt;
Also, here&amp;#39;s a link to download the code: &lt;a rel="enclosure" href="http://pietschsoft.com/file.axd?file=ASPNETMVC_Preview4_Website.zip"&gt;ASP.NET MVC_Preview4_Website Project.zip (192.03 kb) &lt;br /&gt;
&lt;/a&gt;
&lt;/p&gt;
&lt;script type='text/javascript' src='http://pietschsoft.com/js/se_hilite.js'&gt;&lt;/script&gt;
&lt;p&gt;&lt;a href="http://feedads.googleadservices.com/~a/kg7uukqn9to9l69bd34lq19mfc/a"&gt;&lt;img src="http://feedads.googleadservices.com/~a/kg7uukqn9to9l69bd34lq19mfc/i" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feeds.feedburner.com/~a/crpietschmann?a=QvPPeK"&gt;&lt;img src="http://feeds.feedburner.com/~a/crpietschmann?i=QvPPeK" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/crpietschmann?a=BB6txK"&gt;&lt;img src="http://feeds.feedburner.com/~f/crpietschmann?i=BB6txK" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/crpietschmann?a=cqkxsk"&gt;&lt;img src="http://feeds.feedburner.com/~f/crpietschmann?i=cqkxsk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/crpietschmann?a=yXY4ik"&gt;&lt;img src="http://feeds.feedburner.com/~f/crpietschmann?i=yXY4ik" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/crpietschmann/~4/365994691" height="1" width="1"/&gt;</description>
      <link>http://pietschsoft.com/post/2008/08/How-To-Use-ASPNET-MVC-in-Website-rather-than-Web-Application-Project.aspx</link>
      <author>crpietschmann</author>
      <comments>http://pietschsoft.com/post/2008/08/How-To-Use-ASPNET-MVC-in-Website-rather-than-Web-Application-Project.aspx#comment</comments>
      <guid>http://pietschsoft.com/post.aspx?id=fa4fbb6a-6f47-4f43-91c1-f0ebb04544f8</guid>
      <pubDate>Fri, 15 Aug 2008 16:15:00 -0700</pubDate>
      <category>asp.net</category>
      <category>ASP.NET MVC</category>
      <dc:publisher>crpietschmann</dc:publisher>
      <pingback:server>http://pietschsoft.com/pingback.axd</pingback:server>
      <pingback:target>http://pietschsoft.com/post.aspx?id=fa4fbb6a-6f47-4f43-91c1-f0ebb04544f8</pingback:target>
      <slash:comments>2</slash:comments>
      <trackback:ping>http://pietschsoft.com/trackback.axd?id=fa4fbb6a-6f47-4f43-91c1-f0ebb04544f8</trackback:ping>
      <wfw:comment>http://pietschsoft.com/post/2008/08/How-To-Use-ASPNET-MVC-in-Website-rather-than-Web-Application-Project.aspx#comment</wfw:comment>
      <wfw:commentRss>http://pietschsoft.com/syndication.axd?post=fa4fbb6a-6f47-4f43-91c1-f0ebb04544f8</wfw:commentRss>
    </item>
    <item>
      <title>8/11/2008 - My email is currently down</title>
      <description>&lt;p&gt;
Update: Ok, my email is back and working again. 
&lt;/p&gt;
&lt;p&gt;
FYI, for anyone trying to email me, my email is currently down, so I wont see your messages until it&amp;#39;s back up. The issue is actually GMail. I use GMail Apps for your domain to host my email (both pietschsoft.com and simplovation.com) email address&amp;#39;s, and currently their service is down. I don&amp;#39;t know if everyones is out, but mine is. I&amp;#39;ll post an update when it&amp;#39;s back, and reply to all emails as soon as I can too. This is actually the first time GMail has been down for me with all my email address&amp;#39;s.
&lt;/p&gt;
&lt;script type='text/javascript' src='http://pietschsoft.com/js/se_hilite.js'&gt;&lt;/script&gt;
&lt;p&gt;&lt;a href="http://feedads.googleadservices.com/~a/5ig0ctpbodk6ajum9vnap02k4k/a"&gt;&lt;img src="http://feedads.googleadservices.com/~a/5ig0ctpbodk6ajum9vnap02k4k/i" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feeds.feedburner.com/~a/crpietschmann?a=DktTLQ"&gt;&lt;img src="http://feeds.feedburner.com/~a/crpietschmann?i=DktTLQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/crpietschmann?a=Q4RGGK"&gt;&lt;img src="http://feeds.feedburner.com/~f/crpietschmann?i=Q4RGGK" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/crpietschmann?a=jLYnHk"&gt;&lt;img src="http://feeds.feedburner.com/~f/crpietschmann?i=jLYnHk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/crpietschmann?a=EipeGk"&gt;&lt;img src="http://feeds.feedburner.com/~f/crpietschmann?i=EipeGk" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/crpietschmann/~4/362336084" height="1" width="1"/&gt;</description>
      <link>http://pietschsoft.com/post/2008/08/8112008---My-email-is-currently-down.aspx</link>
      <author>crpietschmann</author>
      <comments>http://pietschsoft.com/post/2008/08/8112008---My-email-is-currently-down.aspx#comment</comments>
      <guid>http://pietschsoft.com/post.aspx?id=5792ef80-d82c-4cfa-a6e1-c3dd14f2547c</guid>
      <pubDate>Mon, 11 Aug 2008 16:57:00 -0700</pubDate>
      <category>General</category>
      <dc:publisher>crpietschmann</dc:publisher>
      <pingback:server>http://pietschsoft.com/pingback.axd</pingback:server>
      <pingback:target>http://pietschsoft.com/post.aspx?id=5792ef80-d82c-4cfa-a6e1-c3dd14f2547c</pingback:target>
      <slash:comments>1</slash:comments>
      <trackback:ping>http://pietschsoft.com/trackback.axd?id=5792ef80-d82c-4cfa-a6e1-c3dd14f2547c</trackback:ping>
      <wfw:comment>http://pietschsoft.com/post/2008/08/8112008---My-email-is-currently-down.aspx#comment</wfw:comment>
      <wfw:commentRss>http://pietschsoft.com/syndication.axd?post=5792ef80-d82c-4cfa-a6e1-c3dd14f2547c</wfw:commentRss>
    </item>
    <item>
      <title>SQL 2008 RTM Released, and includes .NET 3.5 SP1</title>
      <description>&lt;p&gt;
&lt;img src="http://pietschsoft.com/image.axd?picture=SQL2008Logo.gif" alt="" align="right" /&gt;Yesterday, &lt;a href="http://www.microsoft.com/presspass/press/2008/aug08/08-06SQLServer2008PR.mspx"&gt;Microsoft released the final RTM release of SQL Server 2008&lt;/a&gt;. Finally, the long anticipated release of SQL 2008 is here. Unfortunately, the &lt;a href="http://www.microsoft.com/sqlserver/2008/en/us/express.aspx"&gt;Express edition of SQL 2008&lt;/a&gt; isn&amp;#39;t available yet (and according to the previous link, it wont be until the end of August), but if you have an MSDN Subscription you can download any of the other editions today.
&lt;/p&gt;
&lt;p&gt;
I&amp;#39;m currently installing SQL 2008 Developer Edition, and before the installation could proceed, it needed to install an update to the .NET Framework 3.5. What update does it need to install? Well, .NET 3.5 Service Pack 1 is the update it needs. Now as you can see from the below screenshot, it doesn&amp;#39;t say anything about being Beta. I wonder?... I wouldn&amp;#39;t think SQL 2008 RTM would install .NET 3.5 SP1 Beta... So, I could only assume that this is the .NET 3.5 SP1 RTM that it&amp;#39;s installing. However, this is a presumptuous conclusion and I don&amp;#39;t really have any facts to back this up. It does make you wonder though...
&lt;/p&gt;
&lt;img src="http://pietschsoft.com/image.axd?picture=SQL2008RTM_dotNet35SP1_Included.png" alt="" width="400" /&gt;&amp;nbsp;
&lt;script type='text/javascript' src='http://pietschsoft.com/js/se_hilite.js'&gt;&lt;/script&gt;
&lt;p&gt;&lt;a href="http://feedads.googleadservices.com/~a/q9efj0f0f41i8aptdgpcmjrnd0/a"&gt;&lt;img src="http://feedads.googleadservices.com/~a/q9efj0f0f41i8aptdgpcmjrnd0/i" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feeds.feedburner.com/~a/crpietschmann?a=1vVHJp"&gt;&lt;img src="http://feeds.feedburner.com/~a/crpietschmann?i=1vVHJp" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/crpietschmann?a=K82O1K"&gt;&lt;img src="http://feeds.feedburner.com/~f/crpietschmann?i=K82O1K" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/crpietschmann?a=T8Hvwk"&gt;&lt;img src="http://feeds.feedburner.com/~f/crpietschmann?i=T8Hvwk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/crpietschmann?a=ipF9Uk"&gt;&lt;img src="http://feeds.feedburner.com/~f/crpietschmann?i=ipF9Uk" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/crpietschmann/~4/358798900" height="1" width="1"/&gt;</description>
      <link>http://pietschsoft.com/post/2008/08/SQL-2008-RTM-Released2c-and-includes-NET-35-SP1.aspx</link>
      <author>crpietschmann</author>
      <comments>http://pietschsoft.com/post/2008/08/SQL-2008-RTM-Released2c-and-includes-NET-35-SP1.aspx#comment</comments>
      <guid>http://pietschsoft.com/post.aspx?id=f70a394d-93b4-4fed-bbb0-f3e39326ec55</guid>
      <pubDate>Thu, 07 Aug 2008 16:07:00 -0700</pubDate>
      <category>General</category>
      <dc:publisher>crpietschmann</dc:publisher>
      <pingback:server>http://pietschsoft.com/pingback.axd</pingback:server>
      <pingback:target>http://pietschsoft.com/post.aspx?id=f70a394d-93b4-4fed-bbb0-f3e39326ec55</pingback:target>
      <slash:comments>4</slash:comments>
      <trackback:ping>http://pietschsoft.com/trackback.axd?id=f70a394d-93b4-4fed-bbb0-f3e39326ec55</trackback:ping>
      <wfw:comment>http://pietschsoft.com/post/2008/08/SQL-2008-RTM-Released2c-and-includes-NET-35-SP1.aspx#comment</wfw:comment>
      <wfw:commentRss>http://pietschsoft.com/syndication.axd?post=f70a394d-93b4-4fed-bbb0-f3e39326ec55</wfw:commentRss>
    </item>
    <item>
      <title>Write code, Win FREE MSDN Subscription!</title>
      <description>&lt;p&gt;
Have you got a cool piece of code you wrote, but don&amp;#39;t know what to do with?&lt;br /&gt;
Have you got a cool idea, but need the motivation to work on it?&lt;br /&gt;
Would you like an MSDN Subscription, but don&amp;#39;t have the money to pay for it?
&lt;/p&gt;
&lt;p&gt;
If you can answer, &amp;quot;YES&amp;quot; to any of the above questions, then you should definitely submit an entry in the Community Coding Contest by midnight September 30, 2008! 
&lt;/p&gt;
&lt;p&gt;
As of today, there are 58 days left to submit your entries in the &lt;a href="http://communitycodingcontest.org/"&gt;Community Coding Contest&lt;/a&gt;. There are more prizes than just two MSDN Premium Subscriptions with Visual Studio Team System 2008 Suite being given away; a few companies have donated additional prizes too! View the Prizes page for a full list of the prizes being given away. Also, if we get a ton of entries, we may be able to get more prizes donated!
&lt;/p&gt;
&lt;p&gt;
Once the entry phase of the contest is finished, the website will be opened up for the community to vote on the winners. We aren&amp;#39;t going to have a panel of judges that might give the prizes to people they know. YOU the community are going to be in charge to judging the contest, on any criteria you want, to decide who wins these awesome prizes! 
&lt;/p&gt;
&lt;p&gt;
I&amp;#39;m anxious to see what cool intries get submitted over the next two months! 
&lt;/p&gt;
&lt;p&gt;
More Info: &lt;a href="http://communitycodingcontest.org"&gt;http://communitycodingcontest.org&lt;/a&gt; 
&lt;/p&gt;
&lt;script type='text/javascript' src='http://pietschsoft.com/js/se_hilite.js'&gt;&lt;/script&gt;
&lt;p&gt;&lt;a href="http://feedads.googleadservices.com/~a/d8910gg4jku3k2b7votefqd7g0/a"&gt;&lt;img src="http://feedads.googleadservices.com/~a/d8910gg4jku3k2b7votefqd7g0/i" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feeds.feedburner.com/~a/crpietschmann?a=aobOWT"&gt;&lt;img src="http://feeds.feedburner.com/~a/crpietschmann?i=aobOWT" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/crpietschmann?a=RuowJK"&gt;&lt;img src="http://feeds.feedburner.com/~f/crpietschmann?i=RuowJK" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/crpietschmann?a=vyg6Mk"&gt;&lt;img src="http://feeds.feedburner.com/~f/crpietschmann?i=vyg6Mk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/crpietschmann?a=R1ntrk"&gt;&lt;img src="http://feeds.feedburner.com/~f/crpietschmann?i=R1ntrk" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/crpietschmann/~4/355489514" height="1" width="1"/&gt;</description>
      <link>http://pietschsoft.com/post/2008/08/Write-code2c-Win-FREE-MSDN-Subscription!.aspx</link>
      <author>crpietschmann</author>
      <comments>http://pietschsoft.com/post/2008/08/Write-code2c-Win-FREE-MSDN-Subscription!.aspx#comment</comments>
      <guid>http://pietschsoft.com/post.aspx?id=0488799a-2a75-4cb6-b9e3-3ae2cd3e8a99</guid>
      <pubDate>Mon, 04 Aug 2008 11:17:00 -0700</pubDate>
      <category>General</category>
      <dc:publisher>crpietschmann</dc:publisher>
      <pingback:server>http://pietschsoft.com/pingback.axd</pingback:server>
      <pingback:target>http://pietschsoft.com/post.aspx?id=0488799a-2a75-4cb6-b9e3-3ae2cd3e8a99</pingback:target>
      <slash:comments>5</slash:comments>
      <trackback:ping>http://pietschsoft.com/trackback.axd?id=0488799a-2a75-4cb6-b9e3-3ae2cd3e8a99</trackback:ping>
      <wfw:comment>http://pietschsoft.com/post/2008/08/Write-code2c-Win-FREE-MSDN-Subscription!.aspx#comment</wfw:comment>
      <wfw:commentRss>http://pietschsoft.com/syndication.axd?post=0488799a-2a75-4cb6-b9e3-3ae2cd3e8a99</wfw:commentRss>
    </item>
    <item>
      <title>Can you do 100? Pushups that is.</title>
      <description>&lt;p&gt;
Today, I was introduced to &lt;a href="http://hundredpushups.com/"&gt;hundredpushups.com&lt;/a&gt;, via a &lt;a href="http://twitter.com/shanselman/statuses/873898459"&gt;Tweet by Scott Hanselman&lt;/a&gt;. In short, the One Hundred Pushups training program is a simple program that requires about 30 minutes a week of exercise doing pushups, with the goal of working up to being able to do 100 consecutive pushups at the end of the 6 weeks program. This is such a simple program, it&amp;#39;s free, and there isn&amp;#39;t much easier than doing pushups.
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://hundredpushups.com"&gt;&lt;img src="http://pietschsoft.com/image.axd?picture=onehundredpushups_big.gif" border="0" alt="" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;h3&gt;What is the hundred pushup program?&lt;/h3&gt;
&lt;p&gt;
Here&amp;#39;s a quote from the website:
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;If you&amp;#39;re serious about increasing your strength, follow this six
week training program and you&amp;#39;ll soon be on your way to completing 100
consecutive push ups!&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;Think there&amp;#39;s no way &lt;em&gt;&lt;strong&gt;you&lt;/strong&gt;&lt;/em&gt;
could do this? I think you can! All you need is a good plan, plenty of
discipline and about 30 minutes a week to achive this goal!&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;No
doubt some of you can already do 50 consecutive push ups, but let&amp;#39;s
face it, you&amp;#39;re in a big minority. Most of you reading this won&amp;#39;t even
be able to manage 20 pushups. Actually, I&amp;#39;m sure many of you can&amp;#39;t even
do 10.&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;However, it really doesn&amp;#39;t matter which group you
fall into. If you follow the progressive push ups training program, I&amp;#39;m
positive you&amp;#39;ll soon be able to do 100 push ups!&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;h3&gt;My Initial Test &lt;br /&gt;
&lt;/h3&gt;
&lt;p&gt;
I did the initial test today and was able to do 30 pushups. As I remember, I haven&amp;#39;t been able to do many more consecutive pushups than this, even in high school when I did some light weight lifting for a little while. I started some other light weight lifting today as well, and I am planning to do other regular exercise (like walking, biking, etc.) and eat a little better as well. I actually went on my first 5 mile bike ride in 2 years the other day. I had to pump the tires up on my bike first of course. 
&lt;/p&gt;
&lt;p&gt;
I&amp;#39;ll post my results of the One Hundred Pushups program here to keep you updated, and possibly help remind you to do it too. 
&lt;/p&gt;
&lt;p&gt;
So... How many pushups can you do? I encourage you to take the challenge. 
&lt;/p&gt;
&lt;script type='text/javascript' src='http://pietschsoft.com/js/se_hilite.js'&gt;&lt;/script&gt;
&lt;p&gt;&lt;a href="http://feedads.googleadservices.com/~a/f1rf6jc97g0526mo46te0si4bc/a"&gt;&lt;img src="http://feedads.googleadservices.com/~a/f1rf6jc97g0526mo46te0si4bc/i" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feeds.feedburner.com/~a/crpietschmann?a=zXNa1I"&gt;&lt;img src="http://feeds.feedburner.com/~a/crpietschmann?i=zXNa1I" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/crpietschmann?a=nrdhbJ"&gt;&lt;img src="http://feeds.feedburner.com/~f/crpietschmann?i=nrdhbJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/crpietschmann?a=73wPzj"&gt;&lt;img src="http://feeds.feedburner.com/~f/crpietschmann?i=73wPzj" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/crpietschmann?a=Im6CEj"&gt;&lt;img src="http://feeds.feedburner.com/~f/crpietschmann?i=Im6CEj" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/crpietschmann/~4/352072970" height="1" width="1"/&gt;</description>
      <link>http://pietschsoft.com/post/2008/07/Can-you-do-100-Pushsups-that-is.aspx</link>
      <author>crpietschmann</author>
      <comments>http://pietschsoft.com/post/2008/07/Can-you-do-100-Pushsups-that-is.aspx#comment</comments>
      <guid>http://pietschsoft.com/post.aspx?id=516b5da4-c2e2-4f4f-bf0a-19ca09680926</guid>
      <pubDate>Thu, 31 Jul 2008 19:02:00 -0700</pubDate>
      <category>health</category>
      <dc:publisher>crpietschmann</dc:publisher>
      <pingback:server>http://pietschsoft.com/pingback.axd</pingback:server>
      <pingback:target>http://pietschsoft.com/post.aspx?id=516b5da4-c2e2-4f4f-bf0a-19ca09680926</pingback:target>
      <slash:comments>1</slash:comments>
      <trackback:ping>http://pietschsoft.com/trackback.axd?id=516b5da4-c2e2-4f4f-bf0a-19ca09680926</trackback:ping>
      <wfw:comment>http://pietschsoft.com/post/2008/07/Can-you-do-100-Pushsups-that-is.aspx#comment</wfw:comment>
      <wfw:commentRss>http://pietschsoft.com/syndication.axd?post=516b5da4-c2e2-4f4f-bf0a-19ca09680926</wfw:commentRss>
    </item>
    <item>
      <title>Why wait for Windows 7? Dell XT has Multi-Touch already</title>
      <description>&lt;p&gt;
Really the only feature that Microsoft has promised for the next version of Windows after Windows Vista, is Multi-Touch. We&amp;#39;re all becoming familiar with the idea of multi-touch displays thanks to the iPhone and iPod Touch, but it&amp;#39;s about time for this capability to come to the PC (or rather Laptop / Tablet). I haven&amp;#39;t owned a Table PC yet, but I&amp;#39;ve had my sights on getting one for a while. I just found out that the &lt;a href="http://www.dell.com/tablet?s=bsd&amp;amp;cs=04"&gt;Dell XT (Dell&amp;#39;s version of the convertable laptop / tablet)&lt;/a&gt; not only has touch capability, but through it&amp;#39;s capacitive digitizing hardware is capable of Multi-Touch as well!
&lt;/p&gt;
&lt;p&gt;
Below is a video on YouTube demonstrating the &lt;a href="http://www.dell.com/tablet?s=bsd&amp;amp;cs=04"&gt;Dell XT&lt;/a&gt;&amp;#39;s Multi-Touch capability enabled by the new &amp;quot;firmware&amp;quot; that is supposed to be out now. 
&lt;/p&gt;
&lt;div&gt;
&lt;object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" width="425" height="344"&gt;
	&lt;param name="width" value="425" /&gt;
	&lt;param name="height" value="344" /&gt;
	&lt;param name="wmode" value="transparent" /&gt;
	&lt;param name="allowfullscreen" value="true" /&gt;
	&lt;param name="src" value="http://www.youtube.com/v/arrkdO_SDm8&amp;amp;hl=en&amp;amp;fs=1" /&gt;
	&lt;embed type="application/x-shockwave-flash" width="425" height="344" wmode="transparent" allowfullscreen="true" src="http://www.youtube.com/v/arrkdO_SDm8&amp;amp;hl=en&amp;amp;fs=1"&gt;&lt;/embed&gt;
&lt;/object&gt;
&lt;/div&gt;
&lt;p&gt;
Video Link: &lt;a href="http://www.youtube.com/watch?v=arrkdO_SDm8"&gt;http://www.youtube.com/watch?v=arrkdO_SDm8&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Here&amp;#39;s another demo of the XT&amp;#39;s Multi-Touch: &lt;a href="http://www.youtube.com/watch?v=pmOBETxIyfk"&gt;http://www.youtube.com/watch?v=pmOBETxIyfk&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Also, if you are interested in learning more about the Multi-Touch functionality coming in Windows 7, you may be interested in checking out the below links:
&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://www.winsupersite.com/showcase/win7_touch.asp"&gt;Windows 7 Multi-Touch: Hi-Res Shots&lt;/a&gt; on Paul Thurrott&amp;#39;s SuperSite for Windows&amp;nbsp;&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=zBX0ZV2CQb8"&gt;Windows 7 - Multi-touch comes with Windows video&lt;/a&gt; on YouTube&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
Being a developer, one of my initial thoughts about the Dell XT is to wonder if there is a programming API for the Multi-Touch capabilities to be able to take advantage of it within my own applications. There doesn&amp;#39;t seem to be an API in the works, but there is a request for one over at ideastorm.com, so go vote for it and get Dell to implement one.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.ideastorm.com/article/show/10079800/Offer_tablets_with_capacitive_multitouch_and_a_publicly_available_API"&gt;http://www.ideastorm.com/article/show/10079800/Offer_tablets_with_capacitive_multitouch_and_a_publicly_available_API&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Also, another related idea, I wonder when Dell or anyone else will start to come out with LCD displays with this same Multi-Touch capable technology?&lt;br /&gt;
&lt;br /&gt;
Now if only I could justify purchasing one of these for myself...&lt;br /&gt;
&lt;script type='text/javascript' src='http://pietschsoft.com/js/se_hilite.js'&gt;&lt;/script&gt;
&lt;p&gt;&lt;a href="http://feedads.googleadservices.com/~a/fe311c15q3qgho0euqdhm6p3k0/a"&gt;&lt;img src="http://feedads.googleadservices.com/~a/fe311c15q3qgho0euqdhm6p3k0/i" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feeds.feedburner.com/~a/crpietschmann?a=gzj6b9"&gt;&lt;img src="http://feeds.feedburner.com/~a/crpietschmann?i=gzj6b9" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/crpietschmann?a=wOPobJ"&gt;&lt;img src="http://feeds.feedburner.com/~f/crpietschmann?i=wOPobJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/crpietschmann?a=7FBu3j"&gt;&lt;img src="http://feeds.feedburner.com/~f/crpietschmann?i=7FBu3j" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/crpietschmann?a=dUr3bj"&gt;&lt;img src="http://feeds.feedburner.com/~f/crpietschmann?i=dUr3bj" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/crpietschmann/~4/351086883" height="1" width="1"/&gt;</description>
      <link>http://pietschsoft.com/post/2008/07/Why-wait-for-Windows-7-Dell-XT-has-Multi-Touch-already.aspx</link>
      <author>crpietschmann</author>
      <comments>http://pietschsoft.com/post/2008/07/Why-wait-for-Windows-7-Dell-XT-has-Multi-Touch-already.aspx#comment</comments>
      <guid>http://pietschsoft.com/post.aspx?id=3a0ea8f3-52d2-4c6c-9c11-c4920e83daf0</guid>
      <pubDate>Wed, 30 Jul 2008 21:07:00 -0700</pubDate>
      <category>General</category>
      <dc:publisher>crpietschmann</dc:publisher>
      <pingback:server>http://pietschsoft.com/pingback.axd</pingback:server>
      <pingback:target>http://pietschsoft.com/post.aspx?id=3a0ea8f3-52d2-4c6c-9c11-c4920e83daf0</pingback:target>
      <slash:comments>3</slash:comments>
      <trackback:ping>http://pietschsoft.com/trackback.axd?id=3a0ea8f3-52d2-4c6c-9c11-c4920e83daf0</trackback:ping>
      <wfw:comment>http://pietschsoft.com/post/2008/07/Why-wait-for-Windows-7-Dell-XT-has-Multi-Touch-already.aspx#comment</wfw:comment>
      <wfw:commentRss>http://pietschsoft.com/syndication.axd?post=3a0ea8f3-52d2-4c6c-9c11-c4920e83daf0</wfw:commentRss>
    </item>
    <item>
      <title>C#: Generate WebPage Thumbmail Screenshot Image</title>
      <description>&lt;p&gt;
There are a few services out there that serve up screenshots of any webpage for you to display on your website. One popular one is &lt;a href="http://kwiboo.com/"&gt;Kwiboo&lt;/a&gt;; this is the one that &lt;a href="http://dotnetkicks.com"&gt;DotNetKicks &lt;/a&gt;uses. For some time now I&amp;#39;ve wondered what the easiest way to do this in .NET was, and today I stumbled upon the undocumented WebBrowser.DrawToBitmap method that makes this extremely easy to do.
&lt;/p&gt;
&lt;p&gt;
By the way, I stumbled upon the WebBrowser.DrawToBitmap while taking a
look at the source code for the &lt;a href="http://smallsharptools.com/Projects/WebPreview/"&gt;WebPreview tool over at
SmallSharpTools.com&lt;/a&gt;. 
&lt;/p&gt;
&lt;p&gt;
Here&amp;#39;s a sample method that returns a Bitmap representation of a webpage:
&lt;/p&gt;
&lt;div class="code"&gt;&lt;p&gt;
&lt;span class="kwrd"&gt;public&lt;/span&gt; Bitmap GenerateScreenshot(&lt;span class="kwrd"&gt;string&lt;/span&gt; url)&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="rem"&gt;// This method gets a screenshot of the webpage&lt;br /&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="rem"&gt;// rendered at its full size (height and width)&lt;br /&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;return&lt;/span&gt; GenerateScreenshot(url, -1, -1);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;span class="kwrd"&gt;public&lt;/span&gt; Bitmap GenerateScreenshot(&lt;span class="kwrd"&gt;string&lt;/span&gt; url, &lt;span class="kwrd"&gt;int&lt;/span&gt; width, &lt;span class="kwrd"&gt;int&lt;/span&gt; height)&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="rem"&gt;// Load the webpage into a WebBrowser control&lt;br /&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; WebBrowser wb = &lt;span class="kwrd"&gt;new&lt;/span&gt; WebBrowser();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; wb.ScrollBarsEnabled = &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; wb.ScriptErrorsSuppressed = &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; wb.Navigate(url);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;while&lt;/span&gt; (wb.ReadyState != WebBrowserReadyState.Complete) { Application.DoEvents(); }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="rem"&gt;// Set the size of the WebBrowser control&lt;br /&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; wb.Width = width;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; wb.Height = height;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;if&lt;/span&gt; (width == -1)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="rem"&gt;// Take Screenshot of the web pages full width&lt;br /&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; wb.Width = wb.Document.Body.ScrollRectangle.Width;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;if&lt;/span&gt; (height == -1)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="rem"&gt;// Take Screenshot of the web pages full height&lt;br /&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; wb.Height = wb.Document.Body.ScrollRectangle.Height;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="rem"&gt;// Get a Bitmap representation of the webpage as it&amp;#39;s rendered in the WebBrowser control&lt;br /&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Bitmap bitmap = &lt;span class="kwrd"&gt;new&lt;/span&gt; Bitmap(wb.Width, wb.Height);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; wb.DrawToBitmap(bitmap, &lt;span class="kwrd"&gt;new&lt;/span&gt; Rectangle(0, 0, wb.Width, wb.Height));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; wb.Dispose();&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;return&lt;/span&gt; bitmap;&lt;br /&gt;
} 
&lt;/p&gt;
&lt;/div&gt;&lt;p&gt;
Here are some example usages of the above method:
&lt;/p&gt;
&lt;div class="code"&gt;&lt;p&gt;
&lt;span class="rem"&gt;// Generate thumbnail of a webpage at 1024x768 resolution&lt;br /&gt;&lt;/span&gt;
Bitmap thumbnail = GenerateScreenshot(&amp;quot;http:&lt;span class="rem"&gt;//pietschsoft.com&amp;quot;, 1024, 768);&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;span class="rem"&gt;// Generate thumbnail of a webpage at the webpage&amp;#39;s full size (height and width)&lt;br /&gt;&lt;/span&gt;
thumbnail = GenerateScreenshot(&amp;quot;http:&lt;span class="rem"&gt;//pietschsoft.com&amp;quot;);&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;span class="rem"&gt;// Display Thumbnail in PictureBox control&lt;br /&gt;&lt;/span&gt;
pictureBox1.Image = thumbnail;&lt;br /&gt;
&lt;br /&gt;
&lt;span class="rem"&gt;/*&lt;br /&gt;&lt;/span&gt;
&lt;span class="rem"&gt;// Save Thumbnail to a File&lt;br /&gt;&lt;/span&gt;
&lt;span class="rem"&gt;thumbnail.Save(&amp;quot;thumbnail.png&amp;quot;, System.Drawing.Imaging.ImageFormat.Png);&lt;br /&gt;&lt;/span&gt;
&lt;span class="rem"&gt;*/&lt;/span&gt; 
&lt;/p&gt;
&lt;/div&gt;&lt;script type='text/javascript' src='http://pietschsoft.com/js/se_hilite.js'&gt;&lt;/script&gt;
&lt;p&gt;&lt;a href="http://feedads.googleadservices.com/~a/qbjjeuuu6i5sdg1kbhvi2hktik/a"&gt;&lt;img src="http://feedads.googleadservices.com/~a/qbjjeuuu6i5sdg1kbhvi2hktik/i" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feeds.feedburner.com/~a/crpietschmann?a=g3xUWm"&gt;&lt;img src="http://feeds.feedburner.com/~a/crpietschmann?i=g3xUWm" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/crpietschmann?a=NShK5J"&gt;&lt;img src="http://feeds.feedburner.com/~f/crpietschmann?i=NShK5J" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/crpietschmann?a=uW6QFj"&gt;&lt;img src="http://feeds.feedburner.com/~f/crpietschmann?i=uW6QFj" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/crpietschmann?a=2uF3Cj"&gt;&lt;img src="http://feeds.feedburner.com/~f/crpietschmann?i=2uF3Cj" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/crpietschmann/~4/344166127" height="1" width="1"/&gt;</description>
      <link>http://pietschsoft.com/post/2008/07/C-Generate-WebPage-Thumbmail-Screenshot-Image.aspx</link>
      <author>crpietschmann</author>
      <comments>http://pietschsoft.com/post/2008/07/C-Generate-WebPage-Thumbmail-Screenshot-Image.aspx#comment</comments>
      <guid>http://pietschsoft.com/post.aspx?id=2a628f30-fe83-4e44-a34b-f31be76d1b4f</guid>
      <pubDate>Wed, 23 Jul 2008 21:43:00 -0700</pubDate>
      <category>asp.net</category>
      <category>General</category>
      <dc:publisher>crpietschmann</dc:publisher>
      <pingback:server>http://pietschsoft.com/pingback.axd</pingback:server>
      <pingback:target>http://pietschsoft.com/post.aspx?id=2a628f30-fe83-4e44-a34b-f31be76d1b4f</pingback:target>
      <slash:comments>7</slash:comments>
      <trackback:ping>http://pietschsoft.com/trackback.axd?id=2a628f30-fe83-4e44-a34b-f31be76d1b4f</trackback:ping>
      <wfw:comment>http://pietschsoft.com/post/2008/07/C-Generate-WebPage-Thumbmail-Screenshot-Image.aspx#comment</wfw:comment>
      <wfw:commentRss>http://pietschsoft.com/syndication.axd?post=2a628f30-fe83-4e44-a34b-f31be76d1b4f</wfw:commentRss>
    </item>
    <item>
      <title>Free Vista SP1 Support through March 18, 2009</title>
      <description>&lt;p&gt;
Microsoft is offering Free technical support for Windows Vista SP1.
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;Free, unlimited installation and compatibility support is now available for all worldwide customers using Windows Vista SP1. Telephone support is available worldwide. Some countries also offer Chat and Email support.&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;This is effective from now until March 18, 2009.&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;Find out more information and access the service here: &lt;a href="http://support.microsoft.com/common/international.aspx?rdpath=1&amp;amp;prid=11274&amp;amp;gprid=500921"&gt;http://support.microsoft.com/common/international.aspx?rdpath=1&amp;amp;prid=11274&amp;amp;gprid=500921&lt;/a&gt;&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
I just thought I&amp;#39;d post this in case anyone isn&amp;#39;t aware of this yet, and would like to take advantage of it.
&lt;/p&gt;
&lt;script type='text/javascript' src='http://pietschsoft.com/js/se_hilite.js'&gt;&lt;/script&gt;
&lt;p&gt;&lt;a href="http://feedads.googleadservices.com/~a/lv66ucnjhdckepsu4hm7o0g694/a"&gt;&lt;img src="http://feedads.googleadservices.com/~a/lv66ucnjhdckepsu4hm7o0g694/i" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feeds.feedburner.com/~a/crpietschmann?a=olSq32"&gt;&lt;img src="http://feeds.feedburner.com/~a/crpietschmann?i=olSq32" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/crpietschmann?a=aWI6fJ"&gt;&lt;img src="http://feeds.feedburner.com/~f/crpietschmann?i=aWI6fJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/crpietschmann?a=uO4avj"&gt;&lt;img src="http://feeds.feedburner.com/~f/crpietschmann?i=uO4avj" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/crpietschmann?a=5MfT4j"&gt;&lt;img src="http://feeds.feedburner.com/~f/crpietschmann?i=5MfT4j" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/crpietschmann/~4/337645057" height="1" width="1"/&gt;</description>
      <link>http://pietschsoft.com/post/2008/07/Free-Vista-SP1-Support-through-March-18-2009.aspx</link>
      <author>crpietschmann</author>
      <comments>http://pietschsoft.com/post/2008/07/Free-Vista-SP1-Support-through-March-18-2009.aspx#comment</comments>
      <guid>http://pietschsoft.com/post.aspx?id=1817f17c-01f6-4fce-9ad7-0345bb569450</guid>
      <pubDate>Wed, 16 Jul 2008 21:30:00 -0700</pubDate>
      <category>General</category>
      <dc:publisher>crpietschmann</dc:publisher>
      <pingback:server>http://pietschsoft.com/pingback.axd</pingback:server>
      <pingback:target>http://pietschsoft.com/post.aspx?id=1817f17c-01f6-4fce-9ad7-0345bb569450</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://pietschsoft.com/trackback.axd?id=1817f17c-01f6-4fce-9ad7-0345bb569450</trackback:ping>
      <wfw:comment>http://pietschsoft.com/post/2008/07/Free-Vista-SP1-Support-through-March-18-2009.aspx#comment</wfw:comment>
      <wfw:commentRss>http://pietschsoft.com/syndication.axd?post=1817f17c-01f6-4fce-9ad7-0345bb569450</wfw:commentRss>
    </item>
    <item>
      <title>dotNetExt - .NET Extension Method Library - v0.1 Beta Released</title>
      <description>&lt;p&gt;
This is the first release of a small, new project I created. This is just the first release of the project, and I&amp;#39;ll keep adding
more functionality to it if there is enough interest by me or others in
the project. So, please post any comments you have in the &lt;a href="http://www.codeplex.com/dotNetExt/Thread/List.aspx"&gt;project discussion area&lt;/a&gt;.
&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;dotNetExt - .NET Extension Method Library&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;
&lt;span&gt;dotNetExt
is a small Extension Method Library for .NET 3.5 that extends the BCL
Types with helper methods that make simple tasks simpler. So far there
are extensions for the Object, Array and String BCL Types. The library
is flexible so you can Import All Extension Methods or just the
Extension Methods for the BCL Type you want.&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Download Here: &lt;/strong&gt;&lt;a href="http://codeplex.com/dotNetExt"&gt;http://codeplex.com/dotNetExt&lt;/a&gt; 
&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;Library Usage&lt;/strong&gt; &lt;br /&gt;
&lt;/h3&gt;
&lt;p&gt;
&lt;span&gt;You
can include the entire library of Extension Methods by Importing the
dotNetExt namespace. Alternatively you can Import just the Extension
Methods you want (grouped by Base Class Library Type) by including that
specific extension collections namespace.&lt;/span&gt; 
&lt;/p&gt;
&lt;div class="code"&gt;&lt;p&gt;
&lt;span class="rem"&gt;// Include All Extension Methods&lt;br /&gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;using&lt;/span&gt; dotNetExt;&lt;br /&gt;
&lt;br /&gt;
&lt;span class="rem"&gt;// Include Only The Array Extension Methods&lt;br /&gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;using&lt;/span&gt; dotNetExt.Array;&lt;br /&gt;
&lt;br /&gt;
&lt;span class="rem"&gt;// Include Only The Object Extension Methods&lt;br /&gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;using&lt;/span&gt; dotNetExt.Object;&lt;br /&gt;
&lt;br /&gt;
&lt;span class="rem"&gt;// Include Only The String Extension Methods&lt;br /&gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;using&lt;/span&gt; dotNetExt.String;
&lt;/p&gt;
&lt;/div&gt;&lt;p&gt;
&lt;span&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;h3&gt;Extension Methods&lt;/h3&gt;
&lt;p&gt;
&lt;strong&gt;dotNetExt namespace&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
Importing this namespace you will import all the Extension Methods from the below namespaces.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;dotNetExt.Array namespace&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
This namespace includes Extension Methods for the System.Array Type only.
&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;IsEmpty() - Returns a Boolean indicating whether the Array is Empty (is Null or has a length of zero).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;strong&gt;dotNetExt.Object namespace&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
This namespace includes Extension Methods for the System.Object Type only.
&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;IsType() - Returns a Boolean value indicating whether a variable is of the indicated Type&lt;/li&gt;
	&lt;li&gt;IsArray() - Returns a Boolean value indicating whether a variable points to a System.Array. &lt;br /&gt;
	&lt;/li&gt;
	&lt;li&gt;IsDate() - Returns a Boolean value indicating whether a variable points to a DateTime object. &lt;br /&gt;
	&lt;/li&gt;
	&lt;li&gt;IsDBNull() - Returns a Boolean value indicating whether an expression evaluates to the DBNull class.
	&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;strong&gt;dotNetExt.String namespace&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
This namespace includes Extension Methods for the System.String Type only.
&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Left() - Returns a string containing a specified number of characters from the left side of a string.
	&lt;/li&gt;
	&lt;li&gt;Right() - Returns a string containing a specified number of characters from the right side of a string.
	&lt;/li&gt;
	&lt;li&gt;EncodeHtml() - Returns the String HtmlEncoded.
	&lt;/li&gt;
	&lt;li&gt;DecodeHtml() - Returns the String HtmlDecoded.
	&lt;/li&gt;
	&lt;li&gt;EncodeUrl() - Returns the String UrlEncoded.
	&lt;/li&gt;
	&lt;li&gt;DecodeUrl() - Returns the String UrlDecoded.
	&lt;/li&gt;
	&lt;li&gt;EncodeBase64() - Returns the String Base64 Encoded.
	&lt;/li&gt;
	&lt;li&gt;DecodeBase64() - Returns the String Base64 Decoded.
	&lt;/li&gt;
	&lt;li&gt;ToByteArray() - Returns a Byte Array of the String.&lt;/li&gt;
&lt;/ul&gt;
&lt;script type='text/javascript' src='http://pietschsoft.com/js/se_hilite.js'&gt;&lt;/script&gt;
&lt;p&gt;&lt;a href="http://feedads.googleadservices.com/~a/vpdjjb1h6miavaamqe7tml6kp8/a"&gt;&lt;img src="http://feedads.googleadservices.com/~a/vpdjjb1h6miavaamqe7tml6kp8/i" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feeds.feedburner.com/~a/crpietschmann?a=01pMp1"&gt;&lt;img src="http://feeds.feedburner.com/~a/crpietschmann?i=01pMp1" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/crpietschmann?a=vFeEoJ"&gt;&lt;img src="http://feeds.feedburner.com/~f/crpietschmann?i=vFeEoJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/crpietschmann?a=OlMB6j"&gt;&lt;img src="http://feeds.feedburner.com/~f/crpietschmann?i=OlMB6j" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/crpietschmann?a=mMuePj"&gt;&lt;img src="http://feeds.feedburner.com/~f/crpietschmann?i=mMuePj" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/crpietschmann/~4/337542596" height="1" width="1"/&gt;</description>
      <link>http://pietschsoft.com/post/2008/07/dotNetExt-NET-Extension-Method-Library-v01-Beta-Released.aspx</link>
      <author>crpietschmann</author>
      <comments>http://pietschsoft.com/post/2008/07/dotNetExt-NET-Extension-Method-Library-v01-Beta-Released.aspx#comment</comments>
      <guid>http://pietschsoft.com/post.aspx?id=991001f5-399b-42ff-829c-2b80cb49a8b8</guid>
      <pubDate>Wed, 16 Jul 2008 18:50:00 -0700</pubDate>
      <category>General</category>
      <dc:publisher>crpietschmann</dc:publisher>
      <pingback:server>http://pietschsoft.com/pingback.axd</pingback:server>
      <pingback:target>http://pietschsoft.com/post.aspx?id=991001f5-399b-42ff-829c-2b80cb49a8b8</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://pietschsoft.com/trackback.axd?id=991001f5-399b-42ff-829c-2b80cb49a8b8</trackback:ping>
      <wfw:comment>http://pietschsoft.com/post/2008/07/dotNetExt-NET-Extension-Method-Library-v01-Beta-Released.aspx#comment</wfw:comment>
      <wfw:commentRss>http://pietschsoft.com/syndication.axd?post=991001f5-399b-42ff-829c-2b80cb49a8b8</wfw:commentRss>
    </item>
    <item>
      <title>C#: Enhance Enums using Extension Methods</title>
      <description>&lt;p&gt;
Extension Methods are one of the coolest features that have been added in .NET 3.5. I&amp;#39;ve heard arguments that there is no reason to use them, and the only reason Microsoft added them is to enable the ability to buid LINQ. Well, I do not entirely agree with that statement; in fact, I have found a cool way to use Extension Methods to enhance the System.Enum object since it cannot be inherited. Even though Enum can not be inherited, it can be extended using Extension Methods.
&lt;/p&gt;
&lt;p&gt;
Here&amp;#39;s some example code for a simple Enum that has a DescriptionAttribute applied to each of it&amp;#39;s values:
&lt;/p&gt;
&lt;div class="code"&gt;&lt;p&gt;
&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;enum&lt;/span&gt; LocalizationMarket&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; [Description(&amp;quot;en-US&amp;quot;)]&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; English = 1,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; [Description(&amp;quot;en-ES&amp;quot;)]&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Spanish = 2&lt;br /&gt;
} 
&lt;/p&gt;
&lt;/div&gt;&lt;p&gt;
And here&amp;#39;s the code to an Extension Method that extends the LocalizationMarket Enum with the ToDescriptionString() method that returns the DescriptionAttributes value:
&lt;/p&gt;
&lt;div class="code"&gt;&lt;p&gt;
&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; LocalizationMarketExtensions&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; ToDescriptionString(&lt;span class="kwrd"&gt;this&lt;/span&gt; LocalizationMarket val)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DescriptionAttribute[] attributes = (DescriptionAttribute[])val.GetType().GetField(val.ToString()).GetCustomAttributes(&lt;span class="kwrd"&gt;typeof&lt;/span&gt;(DescriptionAttribute), &lt;span class="kwrd"&gt;false&lt;/span&gt;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;return&lt;/span&gt; attributes.Length &amp;gt; 0 ? attributes[0].Description : &lt;span class="kwrd"&gt;string&lt;/span&gt;.Empty;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
} 
&lt;/p&gt;
&lt;/div&gt;&lt;p&gt;
The usage of this new method is really simple:
&lt;/p&gt;
&lt;div class="code"&gt;&lt;p&gt;
LocalizationMarket myLocal = LocalizationMarket.English;&lt;br /&gt;
MessageBox.Show( myLocal.ToDescriptionString() ); &lt;span class="rem"&gt;// this will show &amp;quot;en-US&amp;quot; in the MessageBox that&amp;#39;s shown &lt;/span&gt;
&lt;/p&gt;
&lt;/div&gt;&lt;p&gt;
Now one thing you must remember with using Extension Methods is you may not want to extend the System.Enum Type, but instead just extend the Enums you create only.
&lt;/p&gt;
&lt;script type='text/javascript' src='http://pietschsoft.com/js/se_hilite.js'&gt;&lt;/script&gt;
&lt;p&gt;&lt;a href="http://feedads.googleadservices.com/~a/l06lr6fmre78qar1tcft9cs24g/a"&gt;&lt;img src="http://feedads.googleadservices.com/~a/l06lr6fmre78qar1tcft9cs24g/i" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feeds.feedburner.com/~a/crpietschmann?a=YXjXe5"&gt;&lt;img src="http://feeds.feedburner.com/~a/crpietschmann?i=YXjXe5" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/crpietschmann?a=63jeUJ"&gt;&lt;img src="http://feeds.feedburner.com/~f/crpietschmann?i=63jeUJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/crpietschmann?a=R0VCuj"&gt;&lt;img src="http://feeds.feedburner.com/~f/crpietschmann?i=R0VCuj" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/crpietschmann?a=ClL5Uj"&gt;&lt;img src="http://feeds.feedburner.com/~f/crpietschmann?i=ClL5Uj" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/crpietschmann/~4/336475959" height="1" width="1"/&gt;</description>
      <link>http://pietschsoft.com/post/2008/07/C-Enhance-Enums-using-Extension-Methods.aspx</link>
      <author>crpietschmann</author>
      <comments>http://pietschsoft.com/post/2008/07/C-Enhance-Enums-using-Extension-Methods.aspx#comment</comments>
      <guid>http://pietschsoft.com/post.aspx?id=4bc01ef2-0463-4739-aa4d-bfe73c7a00bb</guid>
      <pubDate>Tue, 15 Jul 2008 16:38:00 -0700</pubDate>
      <category>General</category>
      <dc:publisher>crpietschmann</dc:publisher>
      <pingback:server>http://pietschsoft.com/pingback.axd</pingback:server>
      <pingback:target>http://pietschsoft.com/post.aspx?id=4bc01ef2-0463-4739-aa4d-bfe73c7a00bb</pingback:target>
      <slash:comments>11</slash:comments>
      <trackback:ping>http://pietschsoft.com/trackback.axd?id=4bc01ef2-0463-4739-aa4d-bfe73c7a00bb</trackback:ping>
      <wfw:comment>http://pietschsoft.com/post/2008/07/C-Enhance-Enums-using-Extension-Methods.aspx#comment</wfw:comment>
      <wfw:commentRss>http://pietschsoft.com/syndication.axd?post=4bc01ef2-0463-4739-aa4d-bfe73c7a00bb</wfw:commentRss>
    </item>
    <item>
      <title>Virtual Earth: Polygon Search - Is Point Within Polygon?</title>
      <description>&lt;p&gt;
Today, I found an article on MSDN that covers how to perform a polygon search to determine if a given Lat/Long point is within a given Polygon.
&lt;/p&gt;
&lt;p&gt;
I copied the logic for searching within the Polygon and made it more reusable than what is posted in the MSDN article, so I thought I&amp;#39;d post it here.
&lt;/p&gt;
&lt;div class="code"&gt;&lt;p&gt;
&lt;span class="kwrd"&gt;if&lt;/span&gt; (GeoHelper == undefined)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;var&lt;/span&gt; GeoHelper = {};&lt;br /&gt;
&lt;br /&gt;
GeoHelper.IsInPolygon=&lt;span class="kwrd"&gt;function&lt;/span&gt;(points,latlong)&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="rem"&gt;// This code adapted from the following URL:&lt;br /&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="rem"&gt;// http://msdn.microsoft.com/en-us/library/cc451895.aspx&lt;br /&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;var&lt;/span&gt; i;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;var&lt;/span&gt; j=points.length-1;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;var&lt;/span&gt; inPoly=&lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;var&lt;/span&gt; lat = latlong.Latitude;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;var&lt;/span&gt; lon = latlong.Longitude;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;for&lt;/span&gt; (i=0; i&amp;lt;points.length; i++) &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;if&lt;/span&gt; (points[i].Longitude&amp;lt;lon &amp;amp;&amp;amp; points[j].Longitude&amp;gt;=lon ||&amp;nbsp; points[j].Longitude&amp;lt;lon &amp;amp;&amp;amp; points[i].Longitude&amp;gt;=lon) &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&am