<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-US"><title type="html">Grounded in Mobility</title><subtitle type="html">extreme over the air manouvers</subtitle><id>http://blogs.msdn.com/agujjar/atom.xml</id><link rel="alternate" type="text/html" href="http://blogs.msdn.com/agujjar/default.aspx" /><link rel="self" type="application/atom+xml" href="http://blogs.msdn.com/agujjar/atom.xml" /><generator uri="http://communityserver.org" version="2.1.61025.2">Community Server</generator><updated>2007-12-17T16:25:00Z</updated><entry><title>Block scoping variables</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/agujjar/archive/2008/12/03/block-scoping-variables.aspx" /><id>http://blogs.msdn.com/agujjar/archive/2008/12/03/block-scoping-variables.aspx</id><published>2008-12-03T04:32:18Z</published><updated>2008-12-03T04:32:18Z</updated><content type="html">&lt;p&gt;Block scoping is used mostly as by-product of using the standard blocks like try-catch, if-then, do-while etc.&lt;/p&gt; &lt;p&gt;However you can explicitly use blocks by unqualified { } braces. I've started using this feature to contain the variables within a function to a specific scope. This is cutting down silly mistakes during development time.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9167572" width="1" height="1"&gt;</content><author><name>agujjar</name><uri>http://blogs.msdn.com/members/agujjar.aspx</uri></author></entry><entry><title>Best new VS Tip - Ctrl +-</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/agujjar/archive/2008/11/27/best-new-vs-tip-ctrl.aspx" /><id>http://blogs.msdn.com/agujjar/archive/2008/11/27/best-new-vs-tip-ctrl.aspx</id><published>2008-11-27T15:46:04Z</published><updated>2008-11-27T15:46:04Z</updated><content type="html">&lt;p&gt;Just picked this up from &lt;a href="http://scottonwriting.net/sowblog/posts/13600.aspx"&gt;Scott on Writing&lt;/a&gt; . &lt;/p&gt; &lt;p&gt;Ctrl +- allows you to navigate through the stack of cursor positions in your VS session. Invaluable when going through multiple F12 (go to definition) in a multilayred application or any comlex debugging session. I expect to use this shortcut daily.&lt;/p&gt; &lt;p&gt;I used to mess around with Ctrl-KK, Ctrl-KN (bookmarks) to achieve the same result. This way is much simpler.&lt;/p&gt; &lt;p&gt;cheers&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9146274" width="1" height="1"&gt;</content><author><name>agujjar</name><uri>http://blogs.msdn.com/members/agujjar.aspx</uri></author></entry><entry><title>Data Generation</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/agujjar/archive/2008/11/27/data-generation.aspx" /><id>http://blogs.msdn.com/agujjar/archive/2008/11/27/data-generation.aspx</id><published>2008-11-27T15:45:16Z</published><updated>2008-11-27T15:45:16Z</updated><content type="html">&lt;p&gt;I don't normally work with a huge number of tables and do a lot of SQL work. But when I do start one of the most painful experiences is generating test data. Painful and un-rewarding. This is the data generation that is purely schema driven and does not care about the actual content of the data.&lt;/p&gt; &lt;p&gt;Looking around for data generation tools i stumbled upon this beauty from Red Gate software - &lt;a href="http://www.red-gate.com/products/SQL_Data_Generator/index.htm"&gt;Data Generator&lt;/a&gt;&amp;nbsp;. I've just fooled around with the the trial version which was simple and quick. at 249 $ it strikes me as too steep for non-database specialists to splurge on personally.&lt;/p&gt; &lt;p&gt;Data generation tools sounds like a perfect fit for an open-source initiative with crowd sourced data for all types of industries. Anyone listening ?&lt;/p&gt; &lt;p&gt;Let me know if any one has free tool recommendations&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9146270" width="1" height="1"&gt;</content><author><name>agujjar</name><uri>http://blogs.msdn.com/members/agujjar.aspx</uri></author></entry><entry><title>Web Platform Installer Release candidate available</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/agujjar/archive/2008/11/27/web-platform-installer-release-candidate-available.aspx" /><id>http://blogs.msdn.com/agujjar/archive/2008/11/27/web-platform-installer-release-candidate-available.aspx</id><published>2008-11-27T15:45:04Z</published><updated>2008-11-27T15:45:04Z</updated><content type="html">&lt;p&gt;The Web Platform Installer (Web PI) is a simple tool that installs Microsoft's entire Web Platform, including IIS7, Visual Web Developer 2008 Express Edition, SQL Server 2008 Express Edition and the .NET Framework. Using the Web Platform Installer’s user interface, you can choose to install either specific products or the entire Microsoft Web Platform onto your computer. The Web PI also helps keep your products up to date by always offering the latest additions to the Web Platform.&lt;/p&gt; &lt;p&gt;download from &lt;a href="http://www.microsoft.com/web/channel/products/WebPlatformInstaller.aspx"&gt;here&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Read more about it&amp;nbsp;on Scott Hanselmans blog &lt;a href="http://feedproxy.google.com/~r/ScottHanselman/~3/1qx80PXAmws/WebPlatformInstallerNowSupportsXPAndTheMasterPlanContinues.aspx"&gt;here&lt;/a&gt; &lt;/p&gt; &lt;p&gt;happy installing the installer&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9146269" width="1" height="1"&gt;</content><author><name>agujjar</name><uri>http://blogs.msdn.com/members/agujjar.aspx</uri></author></entry><entry><title>Never Again - The tale of a missed friday evening beer</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/agujjar/archive/2008/11/22/never-again-the-tale-of-a-missed-friday-evening-beer.aspx" /><id>http://blogs.msdn.com/agujjar/archive/2008/11/22/never-again-the-tale-of-a-missed-friday-evening-beer.aspx</id><published>2008-11-22T09:43:51Z</published><updated>2008-11-22T09:43:51Z</updated><content type="html">&lt;p&gt;He was just like all the other developers when the project started. His eyes gleamed at the thought of starting off on a new code base - the thrill of the first include statement. He knew excatly where the code would be located -&amp;nbsp;D volume (obviously - no self respecting techie would ever use the system volume for storage ). The code would go 5 folders deep under Projects\Work\CompanyName\ProjectName\Code - no spaces. He liked his keyboard and spaces induce the dreaded two-fingered shift key combo that would slow down coding when in the command prompt. &lt;/p&gt; &lt;p&gt;The months passed away in whirl of multi-threading (to the tune of "do that funky coding.. geek booy") and exception chasing. Then it happened. T'was the night before UAT, and he had just put the final touches on the self-healing component of the system. In his all-knowing farsightedness, the self-healing patch download location would be the same as the host application which would get passed to the Process.Start command as a paramter - sweet.&amp;nbsp; It was all unit tested - patches were coming in just beautifully and doing their magic. 6 p/m friday - nice - beer beckoned. and then ..... one of the silly users decided to install the application ... of all the arcane locations under c:\Program &lt;strong&gt;&amp;lt;space&amp;gt; &lt;/strong&gt;Files \blah &lt;strong&gt;&amp;lt;space&amp;gt;&lt;/strong&gt; blah..&amp;nbsp; damn these pesky users . of course he had forgotten to sorround the command arguments with "". &lt;/p&gt; &lt;p&gt;Note to self - &lt;/p&gt; &lt;p&gt;1. Always develop against a realistic folder path with spaces in them&lt;/p&gt; &lt;p&gt;2. Never assume the presence of even a "C" drive.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9132628" width="1" height="1"&gt;</content><author><name>agujjar</name><uri>http://blogs.msdn.com/members/agujjar.aspx</uri></author></entry><entry><title>Just out - IE 6 for WM</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/agujjar/archive/2008/11/22/just-out-ie-6-for-wm.aspx" /><id>http://blogs.msdn.com/agujjar/archive/2008/11/22/just-out-ie-6-for-wm.aspx</id><published>2008-11-22T08:51:24Z</published><updated>2008-11-22T08:51:24Z</updated><content type="html">&lt;p&gt;Its out and its... well&amp;nbsp;much much nicer than the current PIE. &lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/agujjar/WindowsLiveWriter/JustoutIE6forWM_BCD/image%7B0%7D%5B1%5D.png" atomicselection="true"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; border-top: 0px; border-right: 0px" border="0" src="http://blogs.msdn.com/blogfiles/agujjar/WindowsLiveWriter/JustoutIE6forWM_BCD/image%7B0%7D.png" width="240" height="240"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Can you have it ? - &amp;nbsp;No - it&amp;nbsp;will not be made available as a seperate download for your exisitng WM devices. (Personally i dont think this is such a bad move if its not going to perform well as a seperate install). I know that i've been turned off opera on certain devices because it didn't perform well.&lt;/p&gt; &lt;p&gt;Developers - experience it using &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=1A7A6B52-F89E-4354-84CE-5D19C204498A&amp;amp;displaylang=en"&gt;Windows Mobile 6.1.4 Emulator Images&lt;/a&gt; now available.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Some of the cool features available with Internet Explorer Mobile 6 are: &lt;/strong&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Improved fidelity (support for full fidelity desktop rendering)  &lt;li&gt;Layout fixes to accommodate a mobile screen (text wrap)  &lt;li&gt;Enhanced Script and AJAX support&amp;nbsp; (Jscript v5.7 from Internet Explorer 8)  &lt;li&gt;Improved multimedia experience (Adobe Flash Lite 3.1 for Adobe Flash content)  &lt;li&gt;Deeper integration with search  &lt;li&gt;Enhanced cursor navigation model  &lt;li&gt;Touch and gesture support – pan support  &lt;li&gt;Multiple zoom levels  &lt;li&gt;Easy switching between mobile / desktop versions of sites by specifying UA strings. &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;I am going to miss the old PIE - at least in India where data speeds aren't even upto 3G levels yet, loading a full blown web page with all the useless junk on them takes forever. fingers crossed 3G and IE 6 hit the market at the same time&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9132594" width="1" height="1"&gt;</content><author><name>agujjar</name><uri>http://blogs.msdn.com/members/agujjar.aspx</uri></author></entry><entry><title>Sync Inspector Tool - Inspecting Client DB state for pending Changes</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/agujjar/archive/2008/11/22/sync-inspector-tool-inspecting-client-db-state-for-pending-changes.aspx" /><link rel="enclosure" type="application/x-zip-compressed" length="64211" href="http://blogs.msdn.com/agujjar/attachment/9132589.ashx" /><id>http://blogs.msdn.com/agujjar/archive/2008/11/22/sync-inspector-tool-inspecting-client-db-state-for-pending-changes.aspx</id><published>2008-11-22T08:37:00Z</published><updated>2008-11-22T08:37:00Z</updated><content type="html">&lt;p&gt;Its been a while since I got a chance to post. I've been knee deep in developer mode - fun fun. A lot of work has been around Ado.Net Sync Services v2.&lt;/p&gt; &lt;p&gt;One of the issues I face during debugging Sync issues is analysis of the SQL Server CE database state. So ! Here's Inspector Synk to help me around with getting a little insight into the database state. &lt;/p&gt; &lt;p&gt;Just select the sdf file, and the Inspector will give you some basic (very basic) information about the tables and their pending changes status. I would imagine this could be useful in a production scenario to analyze changes left over on the client that need to be sent to the server. I have a bunch of ideas on enhancing this - Maybe over the weekend.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Some of the code might be of interest to people digging into the internals of change tracking in SSCE 3.5 with Sync Service.&lt;/p&gt; &lt;p&gt;__sysSyncArticles : internal tables that keeps a list of tables being tracked for changes along with each table's sync (excuse the resolution)&lt;/p&gt; &lt;p&gt;THE QUERY - to retrieve if table has pending changes or not. Its a little tedious to go into the details, but the most important part is the @LCSN which is the watermark for the last received anchor. &lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;font face="Courier New"&gt;select count(*) from {0} Tbl where (((Tbl.__sysInsertTxBsn IS NOT NULL) AND ((Tbl.__sysInsertTxBsn NOT IN &lt;br&gt;(SELECT __systxbsn&lt;br&gt;FROM __systxcommitsequence) &lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Courier New"&gt;AND Tbl.__sysInsertTxBsn &amp;gt; @LCSN) OR (exists&lt;br&gt;(SELECT __systxbsn&lt;br&gt;FROM __systxcommitsequence&lt;br&gt;WHERE tbl.__sysinserttxbsn = __systxbsn&lt;br&gt;AND __systxcsn &amp;gt; @LCSN) &lt;/font&gt; &lt;/p&gt;&lt;p&gt;&lt;font face="Courier New"&gt;)))&lt;br&gt;OR &lt;br&gt;((Tbl.__sysChangeTxBsn IS NOT NULL) AND ((Tbl.__sysChangeTxBsn NOT IN &lt;br&gt;(SELECT __systxbsn&lt;br&gt;FROM __systxcommitsequence) &lt;/font&gt; &lt;/p&gt;&lt;p&gt;&lt;font face="Courier New"&gt;AND Tbl.__sysChangeTxBsn &amp;gt; @LCSN) OR (exists&lt;br&gt;(SELECT __systxbsn&lt;br&gt;FROM __systxcommitsequence&lt;br&gt;WHERE tbl.__syschangetxbsn = __systxbsn&lt;br&gt;AND __systxcsn &amp;gt; @LCSN) &lt;/font&gt; &lt;/p&gt;&lt;p&gt;&lt;font face="Courier New"&gt;))))&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;There are the basis of Inspector Synk (yes - i insist on calling it that :-) )  &lt;/p&gt;&lt;p&gt;&amp;nbsp; &lt;/p&gt;&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/agujjar/WindowsLiveWriter/SyncInspectorToolInspectingClientDBstate_881/image%7B0%7D%5B10%5D.png" mce_href="http://blogs.msdn.com/blogfiles/agujjar/WindowsLiveWriter/SyncInspectorToolInspectingClientDBstate_881/image%7B0%7D%5B10%5D.png" atomicselection="true"&gt;&lt;img src="http://blogs.msdn.com/blogfiles/agujjar/WindowsLiveWriter/SyncInspectorToolInspectingClientDBstate_881/image%7B0%7D_thumb%5B6%5D.png" style="border: 0px none ;" mce_src="http://blogs.msdn.com/blogfiles/agujjar/WindowsLiveWriter/SyncInspectorToolInspectingClientDBstate_881/image%7B0%7D_thumb%5B6%5D.png" border="0" width="612" height="475"&gt;&lt;/a&gt;  &lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;hope this helps you happy syncers. Code Attached. Watch out for updates&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9132589" width="1" height="1"&gt;</content><author><name>agujjar</name><uri>http://blogs.msdn.com/members/agujjar.aspx</uri></author><category term="Sync Services" scheme="http://blogs.msdn.com/agujjar/archive/tags/Sync+Services/default.aspx" /></entry><entry><title>IIS7 does not render CSS</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/agujjar/archive/2008/05/02/iis7-does-not-render-css.aspx" /><id>http://blogs.msdn.com/agujjar/archive/2008/05/02/iis7-does-not-render-css.aspx</id><published>2008-05-02T09:28:40Z</published><updated>2008-05-02T09:28:40Z</updated><content type="html">&lt;p&gt;This is because under default settings, "static content" is not installed with IIS.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;To enable this on a Windows Server 2008 machine do the following&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;1. Fire up Server Manager&lt;/p&gt; &lt;p&gt;2. Select Web Server under Roles - notice that Static Content is not installed&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/agujjar/WindowsLiveWriter/IIS7doesnotrenderCSS_A7E1/image%7B0%7D%5B20%5D.png" atomicselection="true"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="503" src="http://blogs.msdn.com/blogfiles/agujjar/WindowsLiveWriter/IIS7doesnotrenderCSS_A7E1/image%7B0%7D_thumb%5B18%5D.png" width="833" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;3. Select Add Role Services from the right hand menu&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/agujjar/WindowsLiveWriter/IIS7doesnotrenderCSS_A7E1/image%7B0%7D%5B39%5D.png" atomicselection="true"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="554" src="http://blogs.msdn.com/blogfiles/agujjar/WindowsLiveWriter/IIS7doesnotrenderCSS_A7E1/image%7B0%7D_thumb%5B33%5D.png" width="917" border="0"&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;4. Check Static content and install.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8449361" width="1" height="1"&gt;</content><author><name>agujjar</name><uri>http://blogs.msdn.com/members/agujjar.aspx</uri></author></entry><entry><title>Consuming WCF Services from Compact Framework 3.5</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/agujjar/archive/2008/05/01/consuming-wcf-services-from-compact-framework-3-5.aspx" /><id>http://blogs.msdn.com/agujjar/archive/2008/05/01/consuming-wcf-services-from-compact-framework-3-5.aspx</id><published>2008-05-01T08:53:12Z</published><updated>2008-05-01T08:53:12Z</updated><content type="html">&lt;p&gt;CF 3.5 introduces support for WCF. &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Consuming using a WCF client&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;To create a CF WCF client you will need to generate it using the NetCFSvcUtil tool which is available as a part of the &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=C8174C14-A27D-4148-BF01-86C2E0953EAB&amp;amp;displaylang=en"&gt;Power Toys download&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Use this tool&amp;nbsp;as you would&amp;nbsp;for the desktop to generate a client.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Limitation: CF 3.5 only support basicHttpBinding. So in the Web.Config of your Service you will need to modify the binding attribute to binding="basicHttpBinding"&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Limitation: CF 3.5 supports only Certificate credentials. You have no way of specifying / attaching username and password credentials on your request to the server. &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Consuming using a Web Reference&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;the exposed WCF service can also be consumed as a standard web reference. Indeed for some time, this might also be the preferred way until WCF client matures. &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;To make your WCF service amenable for this sort of consumption, add the attribute &lt;/p&gt; &lt;p&gt;[ServiceContract(Namespace = "&lt;a href="http://CCBCC.Business.Services&amp;quot;)"&gt;YourName")&lt;/a&gt;, XmlSerializerFormat]&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;Now simply add a web reference to the WCF service and you should be ready to go.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;for more information check out these posts from Andrew Arnott&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/andrewarnottms/archive/2007/08/21/The-WCF-subset-supported-by-NetCF.aspx"&gt;The WCF subset supported by NetCF&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/andrewarnottms/archive/2007/09/13/calling-wcf-services-from-netcf-3-5-using-compact-wcf-and-netcfsvcutil-exe.aspx"&gt;Calling WCF services from NetCF 3.5 using Compact WCF and NetCFSvcUtil.exe&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/andrewarnottms/archive/2007/10/29/what-do-you-think-of-the-new-wcf-store-and-forward-mail-transport.aspx"&gt;What do you think of the new WCF 'Store and forward' Mail Transport?&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8446437" width="1" height="1"&gt;</content><author><name>agujjar</name><uri>http://blogs.msdn.com/members/agujjar.aspx</uri></author></entry><entry><title>Expanding Disk space in Hyper-V and Windows Server 2008</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/agujjar/archive/2008/04/28/expanding-disk-space-in-hyper-v-and-windows-server-2008.aspx" /><id>http://blogs.msdn.com/agujjar/archive/2008/04/28/expanding-disk-space-in-hyper-v-and-windows-server-2008.aspx</id><published>2008-04-28T20:49:31Z</published><updated>2008-04-28T20:49:31Z</updated><content type="html">&lt;p&gt;If you are running your Windows Server 2008 over Hyper-V, we must first make the extra space available through the Hyper-V Manager&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Making space available&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;1. Open Hyper-V Manager on physical machine&lt;/p&gt; &lt;p&gt;2. Stop the target VM&lt;/p&gt; &lt;p&gt;3. Right-click target VM and select settings&lt;/p&gt; &lt;p&gt;4. Hardware &amp;gt; IDE Controller 0 &amp;gt; Hard drive&lt;/p&gt; &lt;p&gt;5. Edit Virtual Hard Disk&lt;/p&gt; &lt;p&gt;6. Choose Action &amp;gt; Expand&lt;/p&gt; &lt;p&gt;7. Enter expansion size&lt;/p&gt; &lt;p&gt;This is not the end of it. The disk drive on your VM internally is still only configured for the older space availability&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Using the Available space&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;1. Log into target VM&lt;/p&gt; &lt;p&gt;2. Open Server Manager&lt;/p&gt; &lt;p&gt;3. Storage &amp;gt; Disk Management&lt;/p&gt; &lt;p&gt;4.right-click Disk &amp;gt; Extend Volume&lt;/p&gt; &lt;p&gt;5. Enter expansion size from available size&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Hope this helps someone. &lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8435787" width="1" height="1"&gt;</content><author><name>agujjar</name><uri>http://blogs.msdn.com/members/agujjar.aspx</uri></author></entry><entry><title>Microsoft Synchronization Services for ADO.NET with SQL Server 2008</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/agujjar/archive/2008/01/09/sync-services-with-sql-2008.aspx" /><id>http://blogs.msdn.com/agujjar/archive/2008/01/09/sync-services-with-sql-2008.aspx</id><published>2008-01-09T12:59:30Z</published><updated>2008-01-09T12:59:30Z</updated><content type="html">&lt;p&gt;Microsoft Sync Service Framework includes Sync Services for ADO.Net that allows you to "synchronize data from different sources over two-tier, N-tier, and service-based architectures. The Synchronization Services API provides a set of components to synchronize data between data services and a local store, instead of only replicating a database and its schema". I am currently working with Sync Services using SQL Server 3.5 as the client and SQL Server 2008 as the server side database to synchronize with. In this post&amp;nbsp;I will detail out the implementation details on the server side, and how we can leverage the new Change tracking functionality of SQL Server 2008 for Synchronization.&lt;/p&gt; &lt;p&gt;Before we dig into how to do this with SQL Server 2008, lets take a look at how this was implemented in SQL Server 2005&lt;/p&gt; &lt;h2&gt;&lt;font color="#008040" size="3"&gt;SQL Server 2005 - using special columns and tables to track changes&lt;/font&gt;&lt;/h2&gt; &lt;p&gt;When using SQL 2005 as the data store on the server side change tracking is typically done by using special columns on the tables to be synchronized that keep track of updates, inserts and deletes timestamps on the table. An additional&amp;nbsp;&lt;strong&gt;_tombstone&lt;/strong&gt; table is required to hold deleted rows. Sync Services ADO.Net provides support for this design with &lt;strong&gt;&lt;a title="SqlSyncAdapterBuilder Class" href="http://msdn2.microsoft.com/en-us/library/microsoft.synchronization.data.server.sqlsyncadapterbuilder(SQL.100).aspx"&gt;SqlSyncAdapterBuilder&lt;/a&gt;&lt;/strong&gt; class which accepts these columns names as input parameters to build up the SqlSyncAdapter to track changes and apply inserts, updates and deletes to the server side. This design serves the needs of synchronization, but enforces the use of special columns and table just for synchronization and clutters the business abstraction in the DB with sync implementation details. &lt;/p&gt; &lt;h2&gt;&lt;font color="#008000" size="3"&gt;NEW SQL Server 2008 - Out of the box Change Tracking&lt;/font&gt;&lt;/h2&gt; &lt;p&gt;The &lt;a href="http://www.microsoft.com/sql/2008/prodinfo/download.mspx"&gt;Nov CTP release&lt;/a&gt; of SQL Server, introduces an in built change tracking mechanism that is invaluable for synchronization scenarios. The documentation for this release is still sketchy and incomplete, but a good starting point is the &lt;a href="http://technet.microsoft.com/en-us/library/bb418491.aspx"&gt;MSDN reference&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;When change tracking is enabled, the SQL Server engine maintains information about changes made to the table internally. The tracked data is made accessible by a bunch of system functions that allow you to query the information. However, remember that this does not provide full out data logging and only maintains the primary keys changes and type for change. &lt;/p&gt; &lt;h3&gt;&lt;strong&gt;Database Configuration&lt;/strong&gt;&lt;/h3&gt; &lt;p&gt;Change tracking must be turned on explicitly on the database and on the tables that are to be tracked&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;font color="#0000ff"&gt;ALTER DATABASE [Database_Name]&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font color="#0000ff"&gt;SET CHANGE_TRACKING = ON&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font color="#0000ff"&gt;(CHANGE_RETENTION = 2 DAYS, AUTO_CLEANUP = ON)&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;blockquote&gt; &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&amp;nbsp;&lt;/p&gt;&lt;/blockquote&gt; &lt;blockquote&gt; &lt;p&gt;&lt;font color="#0000ff"&gt;ALTER TABLE [Table_Name]&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font color="#0000ff"&gt;ENABLE CHANGE_TRACKING&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font color="#0000ff"&gt;WITH (TRACK_COLUMNS_UPDATED = ON)&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;blockquote&gt; &lt;p&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/bb964713(SQL.100).aspx"&gt;More...&lt;/a&gt; &lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Important: the tracking begins for data modified after these commands are fired. This means that data that is already present in the table is viewed as seed data and will not be available through the change tracking functions.&lt;/p&gt; &lt;h3&gt;&lt;strong&gt;Accessing Tracked Data&lt;/strong&gt;&lt;/h3&gt; &lt;p&gt;When change tracking is enabled for the database a version number is maintained internally for the database and can be accessed by calling CHANGE_TRACKING_GET_CURRENT_VERSION(). On initialization, all the rows are assigned (virtually and internally) this version number. &lt;/p&gt; &lt;p&gt;Whenever a DML statement is executed on any of the tracked tables, the database version number is incremented by 1, and the new row is now assigned the new version number. The old rows are still marked with the old version number. The appeal of this scheme is in its simplicity.&lt;/p&gt; &lt;p&gt;The &lt;a href="http://msdn2.microsoft.com/en-us/library/bb934145(SQL.100).aspx"&gt;CHANGETABLE&lt;/a&gt;&amp;nbsp;function retrieves the tracked information. There are 2 ways to use this function - &lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;1. SELECT * FROM CHANGETABLE ( Changes &amp;lt;Table_Name&amp;gt;,&amp;nbsp;last_sync_version)&lt;/p&gt;&lt;/blockquote&gt; &lt;blockquote&gt; &lt;p&gt;this returns the &lt;strong&gt;all the rows &lt;/strong&gt;that have changed for the table since "last_sync_version". Each rows corresponds to one changed row in the table and contains the primary key of the row and operation.&lt;/p&gt;&lt;/blockquote&gt; &lt;blockquote&gt; &lt;p&gt;2. SELECT * FROM CHANGETABLE (&amp;nbsp;Version &amp;lt;Table_Name&amp;gt;,&amp;nbsp; &amp;lt;primary_column_name&amp;gt;, &amp;lt;value&amp;gt;)&lt;/p&gt;&lt;/blockquote&gt; &lt;blockquote&gt; &lt;p&gt;this is used to return the version information for a &lt;strong&gt;particular&lt;/strong&gt; row&lt;/p&gt;&lt;/blockquote&gt; &lt;h3&gt;&lt;strong&gt;Integrating with Sync Services &lt;/strong&gt;&lt;/h3&gt; &lt;p&gt;Basically the Sync Service API requires that you configure a &lt;a href="http://msdn2.microsoft.com/en-us/library/microsoft.synchronization.data.server.dbserversyncprovider(SQL.100).aspx"&gt;DbServerSyncProvider&lt;/a&gt; for your specific data store, and a &lt;a href="http://msdn2.microsoft.com/en-us/library/microsoft.synchronization.data.server.sqlsyncadapterbuilder(SQL.100).aspx"&gt;SqlSyncAdapterBuilder&lt;/a&gt; per table to perform synchronization. A full implementation of this using SQL Server 2005 is described here &lt;a href="http://msdn2.microsoft.com/en-us/library/bb726015(SQL.100).aspx"&gt;A Synchronization Services Application (SQL Server 2005)&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Shown below is how you would set this up using the change tracking feature of &lt;strong&gt;SQL 2008&lt;/strong&gt;.We need to configure a bunch of the commands on these to enable synchronization.&lt;/p&gt; &lt;h6&gt;DbServerSyncProvider.SelectNewAnchorCommand :contains the query to retrieve the new anchor value from the database. The anchor defines the upper bound for the set of changes to be synchronized during the current session. We will set this to the value returned by change_tracking_current_version() &lt;/h6&gt; &lt;blockquote&gt; &lt;p&gt;&lt;font face="Courier New" size="2"&gt;DbServerSyncProvider _serverSyncProvider = new DbServerSyncProvider(); &lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;blockquote&gt; &lt;p&gt;&lt;font face="Courier New" size="2"&gt;SqlCommand selectNewAnchorCommand = new SqlCommand();&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Courier New" size="2"&gt;string newAnchorVariable = "@" + SyncSession.SyncNewReceivedAnchor;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Courier New" size="2"&gt;//SQL Server 2008 supports change_tracking_current_version() that returns &lt;br&gt;//the latest version number for the database&lt;br&gt;selectNewAnchorCommand.CommandText =&lt;br&gt;"SELECT " + newAnchorVariable + " = change_tracking_current_version()" &lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Courier New" size="2"&gt;selectNewAnchorCommand.Parameters.Add(newAnchorVariable, SqlDbType.Int);&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Courier New" size="2"&gt;selectNewAnchorCommand.Parameters[newAnchorVariable].Direction = ParameterDirection.Output; &lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Courier New" size="2"&gt;_serverSyncProvider.SelectNewAnchorCommand = selectNewAnchorCommand;&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;h6&gt;SyncAdapter.SelectIncrementalInsertsCommand: query that is used to retrieve inserts made in the server database since the last synchronization. &lt;/h6&gt; &lt;blockquote&gt; &lt;p&gt;&lt;font face="Courier New" size="2"&gt;//select inserts from the server&lt;br&gt;SqlCommand incrementalInsertCommand = new SqlCommand();&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Courier New" size="2"&gt;incrementalInsertCommand.CommandText = String.Format(&lt;br&gt;@"SELECT {0} FROM {1} as originalTable&lt;br&gt;INNER JOIN ChangeTable(changes {1}, {2} ) ct &lt;br&gt;ON ct.{3} = originalTable.{3}&lt;br&gt;where ct.SYS_CHANGE_OPERATION = '{4}'&lt;br&gt;", columns, tableName, "@" + SyncSession.SyncLastReceivedAnchor, idColumnName, OPERATION_INSERT);&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Courier New" size="2"&gt;incrementalInsertCommand.Parameters.Add("@" + SyncSession.SyncLastReceivedAnchor, SqlDbType.BigInt);&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Courier New" size="2"&gt;syncAdapter.SelectIncrementalInsertsCommand = incrementalInsertCommand;&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;h6&gt;SyncAdapter.SelectIncrementalUpdatesCommand: query that is used to retrieve updates made in the server database since the last synchronization.&lt;/h6&gt; &lt;blockquote&gt; &lt;p&gt;&lt;font face="Courier New" size="2"&gt;//Select updates from the server.&lt;br&gt;SqlCommand incrementalUpdateCommand = new SqlCommand();&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;blockquote&gt; &lt;p&gt;&lt;font face="Courier New" size="2"&gt;incrementalUpdateCommand.CommandText = String.Format(&lt;br&gt;@"SELECT {0} FROM {1} as originalTable&lt;br&gt;INNER JOIN ChangeTable(changes {1}, {2} ) ct &lt;br&gt;ON ct.{3} = originalTable.{3}&lt;br&gt;where ct.SYS_CHANGE_OPERATION = '{4}'&lt;br&gt;", columns, tableName, "@" + SyncSession.SyncLastReceivedAnchor, idColumnName, OPERATION_UPDATE);&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Courier New" size="2"&gt;incrementalUpdateCommand.Parameters.Add("@" + SyncSession.SyncLastReceivedAnchor, SqlDbType.BigInt);&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Courier New" size="2"&gt;syncAdapter.SelectIncrementalUpdatesCommand = incrementalUpdateCommand;&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;h6&gt;SyncAdapter.SelectIncrementalDeletesCommand:&amp;nbsp;query that is used to retrieve deletes made in the server database since the last synchronization&lt;/h6&gt; &lt;blockquote&gt; &lt;p&gt;&lt;font face="Courier New" size="2"&gt;//Select deletes from the server.&lt;br&gt;SqlCommand incrementalDeleteCommand = new SqlCommand(); &lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Courier New" size="2"&gt;incrementalDeleteCommand.CommandText = String.Format(&lt;br&gt;@"SELECT originalTable.{0} FROM {1} as originalTable&lt;br&gt;INNER JOIN ChangeTable(changes {1}, {2} ) ct &lt;br&gt;ON ct.{0} = originalTable.{0}&lt;br&gt;where ct.SYS_CHANGE_OPERATION = '{3}'&lt;br&gt;", idColumnName, tableName, "@" + SyncSession.SyncLastReceivedAnchor, OPERATION_DELETE);&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;blockquote&gt; &lt;p&gt;&lt;font face="Courier New" size="2"&gt;incrementalDeleteCommand.Parameters.Add("@" + SyncSession.SyncLastReceivedAnchor, SqlDbType.BigInt); &lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Courier New" size="2"&gt;syncAdapter.SelectIncrementalDeletesCommand = incrementalDeleteCommand;&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;happy sync'ing&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=7038918" width="1" height="1"&gt;</content><author><name>agujjar</name><uri>http://blogs.msdn.com/members/agujjar.aspx</uri></author></entry><entry><title>WebBrowser control bug in Compact Framework for WM Standard device</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/agujjar/archive/2007/12/20/webbrowser-control-bug-in-compact-framework-for-wm-standard-device.aspx" /><id>http://blogs.msdn.com/agujjar/archive/2007/12/20/webbrowser-control-bug-in-compact-framework-for-wm-standard-device.aspx</id><published>2007-12-20T18:21:21Z</published><updated>2007-12-20T18:21:21Z</updated><content type="html">&lt;p&gt;Here's the scenario - You have a form (StartForm) which has a sub-form (subForm) that contains a &lt;a title="WebBrowser" href="http://msdn2.microsoft.com/en-us/library/system.windows.forms.webbrowser.aspx" target="_blank"&gt;WebBrowser&lt;/a&gt; control. When the sub-form is disposed (not just dismissed), your startform also shuts down. This is a bug !&lt;/p&gt; &lt;p&gt;This occurs because the Web browser control does a &lt;a href="http://msdn2.microsoft.com/en-us/library/ms961307.aspx" target="_blank"&gt;PostQuitMessage()&lt;/a&gt; upon receiving a &lt;a href="http://msdn2.microsoft.com/en-us/library/aa921571.aspx"&gt;WM_CLOSE&lt;/a&gt; message. Now the tricky bit over here is that a &lt;a href="http://blogs.msdn.com/oldnewthing/archive/2005/11/04/489028.aspx"&gt;PostQuitMessage is not a real message&lt;/a&gt; that is inserted into the thread's message queue. Its a virtual message that will be presented to whoever cares once all messages in the queue are processed. What this means to us is that since the control&amp;nbsp;is calling PostQuitMessage, we do not have&amp;nbsp;a deterministic point to handle this message.&lt;/p&gt; &lt;p&gt;However, the workaround options are &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;ol&gt; &lt;li&gt;Don't shut the sub-form: In the code below, if you can eliminate "suForm.Dispose()" , then you don't have an issue. However, your application design may not allow this workaround.in which case, do option &lt;/li&gt; &lt;li&gt;Handle the message pump in the StartForm by creating a message loop that exits on seeing the WM_QUIT event.&lt;/li&gt;&lt;/ol&gt; &lt;blockquote&gt; &lt;p&gt;Lazy pseudo code - &lt;/p&gt;&lt;/blockquote&gt; &lt;blockquote&gt; &lt;p&gt;SubForm&amp;nbsp;subForm = new SubForm();&lt;br&gt;subForm.ShowDialog();&lt;br&gt;subForm.Dispose();&amp;nbsp; //this is the line that causes the WebBrowser to PostQuitMessage&lt;/p&gt; &lt;p&gt;PostQuitMessage(0); // This is to handle the future where the quit message may not be posted by the native control  &lt;p&gt;//message loop that will stop once WM_QUIT (0) is presented to it &lt;p&gt;MSG msg;// Native structure coredll.dll&lt;br&gt;while (GetMessage(out msg, new IntPtr(0), 0, 0) != 0)&lt;br&gt;{&lt;br&gt;TranslateMessage(ref msg); // Native function coredll.dll&lt;br&gt;DispatchMessage(ref msg);// Native function coredll.dll&lt;br&gt;}&lt;/p&gt;&lt;/blockquote&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=6818104" width="1" height="1"&gt;</content><author><name>agujjar</name><uri>http://blogs.msdn.com/members/agujjar.aspx</uri></author></entry><entry><title>VS 2008 renders Windows Mobile Form as a Windows Desktop form !</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/agujjar/archive/2007/12/18/vs-2008-renders-windows-mobile-form-as-a-windows-desktop-form.aspx" /><id>http://blogs.msdn.com/agujjar/archive/2007/12/18/vs-2008-renders-windows-mobile-form-as-a-windows-desktop-form.aspx</id><published>2007-12-18T18:46:00Z</published><updated>2007-12-18T18:46:00Z</updated><content type="html">&lt;p&gt;Ran into a funny problem with Visual Studio, where it got confused and started rendering my Windows Mobile form as a Windows Desktop &lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/agujjar/WindowsLiveWriter/VS2008rendersWindowsMobileFormasaWindows_13E97/incorrectlyRenderedMobileForm%5B1%5D.jpg" atomicselection="true"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="240" src="http://blogs.msdn.com/blogfiles/agujjar/WindowsLiveWriter/VS2008rendersWindowsMobileFormasaWindows_13E97/incorrectlyRenderedMobileForm.jpg" width="191" border="0"&gt;&lt;/a&gt;&amp;nbsp; instead of &amp;nbsp;&lt;a href="http://blogs.msdn.com/blogfiles/agujjar/WindowsLiveWriter/VS2008rendersWindowsMobileFormasaWindows_13E97/image%7B0%7D%5B1%5D.png" atomicselection="true"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="240" src="http://blogs.msdn.com/blogfiles/agujjar/WindowsLiveWriter/VS2008rendersWindowsMobileFormasaWindows_13E97/image%7B0%7D.png" width="105" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;The problem occurs, in my case, due to a combination of two factors &lt;/p&gt; &lt;p&gt;1. This form is inherited &lt;/p&gt; &lt;p&gt;2. Both the forms are localizable&amp;nbsp;= true and have more than one localized resource files&lt;/p&gt; &lt;p&gt;I fiddled with the language and it started rendering correctly. Closed and reopened, the wrong display was back again. Weird !&lt;/p&gt; &lt;p&gt;Still trying to figure out the exact cause of this - its not easily reproducible.. ah well .. some rainy day..&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=6797449" width="1" height="1"&gt;</content><author><name>agujjar</name><uri>http://blogs.msdn.com/members/agujjar.aspx</uri></author></entry><entry><title>Determine the Platform in .Net Compact Framework 3.5</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/agujjar/archive/2007/12/18/determine-the-platform-in-net-compact-framework-3-5.aspx" /><id>http://blogs.msdn.com/agujjar/archive/2007/12/18/determine-the-platform-in-net-compact-framework-3-5.aspx</id><published>2007-12-18T09:19:00Z</published><updated>2007-12-18T09:19:00Z</updated><content type="html">&lt;P&gt;.Net CF 3.5 introduces the &lt;A class="" title=Platform href="http://msdn2.microsoft.com/en-us/library/microsoft.windowsce.forms.systemsettings.platform(VS.90).aspx" mce_href="http://msdn2.microsoft.com/en-us/library/microsoft.windowsce.forms.systemsettings.platform(VS.90).aspx"&gt;SystemSettings&lt;SPAN class=cs&gt;.&lt;/SPAN&gt;Platform&lt;/A&gt; property in &lt;A onclick="javascript:Track('ctl00_rs1_mainContentContainer_ctl00|ctl00_rs1_mainContentContainer_ctl01',this);" href="http://msdn2.microsoft.com/en-us/library/kbcxyf35(VS.90).aspx" mce_href="http://msdn2.microsoft.com/en-us/library/kbcxyf35(VS.90).aspx"&gt;Microsoft.WindowsCE.Forms&lt;/A&gt;&amp;nbsp;namespace which provides you the platform of the device the code is executing on. The property is of type &lt;A class="" title=WinCEPlatform href="http://msdn2.microsoft.com/en-us/library/bb301091(VS.90).aspx" mce_href="http://msdn2.microsoft.com/en-us/library/bb301091(VS.90).aspx"&gt;WinCEPlatform&lt;/A&gt;&amp;nbsp; enumeration which contains the members&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;SPAN class=selflink&gt;WinCEGeneric&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN class=selflink&gt;&lt;SPAN class=selflink&gt;PocketPC&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN class=selflink&gt;&lt;SPAN class=selflink&gt;&lt;SPAN class=selflink&gt;Smartphone&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;SPAN class=selflink&gt;&lt;SPAN class=selflink&gt;&lt;SPAN class=selflink&gt;&amp;nbsp;The surprising bit is that since Windows Mobile 6.0, we have moved to the new taxonomy where -&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;SPAN class=selflink&gt;&lt;SPAN class=selflink&gt;&lt;SPAN class=selflink&gt;
&lt;UL&gt;
&lt;LI&gt;Windows Mobile for Smartphone = Windows Mobile Standard (download the Windows Mobile 6 Standard SDK)&lt;/LI&gt;
&lt;LI&gt;Windows Mobile for Pocket PC = Windows Mobile Classic (download the Windows Mobile 6 Professional SDK)&lt;/LI&gt;
&lt;LI&gt;Windows Mobile for Pocket PC Phone Edition = Windows Mobile Professional (download the Windows Mobile 6 Professional SDK)&lt;BR&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;So, I'm baffled why this new enumeration is&amp;nbsp;causing confusion by&amp;nbsp;using the old&amp;nbsp;naming conventions!&lt;BR&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN class=selflink&gt;&lt;SPAN class=selflink&gt;&lt;SPAN class=selflink&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=6794671" width="1" height="1"&gt;</content><author><name>agujjar</name><uri>http://blogs.msdn.com/members/agujjar.aspx</uri></author></entry><entry><title>Using unsupported locale in Windows Mobile</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/agujjar/archive/2007/12/17/using-unsupported-locale-in-windows-mobile.aspx" /><id>http://blogs.msdn.com/agujjar/archive/2007/12/17/using-unsupported-locale-in-windows-mobile.aspx</id><published>2007-12-17T19:25:00Z</published><updated>2007-12-17T19:25:00Z</updated><content type="html">&lt;P&gt;Although you can technically change the locale of the device to anything you desire by using the &lt;A class="" title=SetUserDefaultLCID href="http://msdn2.microsoft.com/en-us/library/bb202902.aspx" mce_href="http://msdn2.microsoft.com/en-us/library/bb202902.aspx"&gt;&lt;FONT color=#003399&gt;SetUserDefaultLCID&lt;/FONT&gt;&lt;/A&gt;&amp;nbsp;, you should only allow it to be set to one of the available locales. Even though your application maybe able to handle the change, this will cause instability to the system. I know for sure that atleast Pocket IE stops working&amp;nbsp;with this change.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=6790898" width="1" height="1"&gt;</content><author><name>agujjar</name><uri>http://blogs.msdn.com/members/agujjar.aspx</uri></author><category term="Localization" scheme="http://blogs.msdn.com/agujjar/archive/tags/Localization/default.aspx" /></entry></feed>