Device platform not found

Sun, April 30, 2006, 09:35 AM under MobileAndEmbedded
Recently I opened a VS2005 Smart Device project that I was assured worked for others, only to face an error message box:
---------------------------
Microsoft Visual Studio
---------------------------
Error retrieving information from user datastore. Platform not found.
---------------------------
OK
---------------------------

When I hit my only choice, which was the OK button, a warning message box appeared:
---------------------------
Microsoft Visual Studio
---------------------------
The project could not be opened because it refers to a device platform that does not exist in your datastore.
---------------------------
OK Cancel
---------------------------

Clicking OK or Cancel had the same effect: the project does not load (i.e. it is "unavailable" in solution explorer).

However, in the top right corner of the warning message box there was the question mark icon. At first I didn't think of clicking on it, since it traditionally is used to get help on UI widgets on the dialog box it appears on. Instead, this one acted as a Help button (why not offer that next to the Cancel button is beyond me) and pointed to this msdn page:

The project you are trying to load targets a device platform that your Visual Studio installation is not configured to support.

To correct this error
Install the platform that supports the project you want to load.

For example if you are trying to load a Windows Mobile 5.0 project and do not have the Windows Mobile 5.0 SDK installed, install the Windows Mobile 5.0 SDK.

So clearly whoever saved that project had saved it while the "Target Device" was set to "Windows Mobile 5.0" (and probably created the project in the first place by choosing the WM 5.0 template). Since the WM 5.0 SDK doesn't ship with VS2005, any machine (like my tablet) that hasn't had the WM 5.0 SDK installed fails to open the project.

As I didn't have time at this instance to download the SDK (or switch to my main machine that has the SDK installed), I opened the csproj file in notepad, located the following line:
<PlatformID>4118C335-430C-497f-BE48-11C3316B135E</PlatformID>
... and changed it to this one:
<PlatformID>3C41C503-53EF-4c2a-8DD4-A8217CAD115E</PlatformID>

Save and close, now reopen in Visual Studio and all is fine (with Target Device set to "Pocket PC 2003").

While it makes no difference, I also changed the OSVersion tag, since it points to 5.01, which is not the WinCE version that PPC2003 is based on: 4.20

Finally note that if you *can* open your project and *then* need to change the platform, you don't have to mess with the text files, simply choose Project->Change Target Platform.

OpenNETCF

Sun, April 23, 2006, 04:40 PM under Random
Anyone that has anything to do with mobility development has heard the OpenNETCF name. If you are one of the few that haven't, go ahead and visit the site of OpenNETCF.org

In addition to shared source initiatives, OpenNETCF has a commercial arm and if you are looking for the best in the world to work on your embedded or mobility projects, go ahead and contact OpenNETCF for all your needs.

OpenNETCF focuses entirely on the embedded and mobile space and offers free libraries, products and consulting services. Every OpenNETCF partner and member of the advisory board is recognised by Microsoft as an MVP. There isn't a single other company that can claim that, as far as I know!

Expect to see many more products coming out of OpenNETCF but for the moment many associate the brand with the Smart Device Framework (SDF).

NETCF v2.0 SP1

Fri, April 21, 2006, 01:04 PM under MobileAndEmbedded
Get the SP1 Beta for the .NET Compact Framework v2.0

Those that have been waiting for WinCE 4.2 or for headless support need not wait any longer.

However, neither that nor the bug fixes nor the other *new* features excite me more than the TuneIn Remote Performance Monitor. Finally, when people ask me about .NET Compact Framework performance tools I won't have to apologise on behalf of the NETCF team :-D

Follow up to Athens talk

Wed, April 12, 2006, 03:55 PM under Events
As you know I was speaking in Greece a few days ago. I was well impressed with the thriving .NET community in Athens (140 registered, although very few didn't show up) and the interactive nature of the talks (I always probe the audience for questions as I go along but it's never been this easy to get participation).

Anyway, reason for this entry is to point members of dotnetzone to the slides. Use that forum for any questions and when I am back from holiday in a week or so I'll try to follow up...

Presenting in Greece

Mon, April 3, 2006, 05:34 AM under Events
This is the first time I will be speaking on a technical subject in another language (i.e. rather than English, the talks will be in Greek!).

If you are near Athens on Monday 10th April, come make fun of my accent at DevDays (at Microsoft Hellas premises).

The theme is Smart Clients and I am giving two talks:
1. .NET Compact Framework with Visual Studio 2005
2. Windows Forms v2.0 Enhancements

For the first one I'll just use my L0 cache information but for the second one I better go prepare some demos!

You must register so go do it now!

Ελάτε παιδιά θα έχει και γεύμα :-D

Busy is implicit (and change of career)

Wed, March 22, 2006, 12:59 AM under Career
The year 2006 is only 3 months old but it has been crazy for me! "Busy is implicit" (that has been my IM personal message text) doesn't begin to describe it. In random order here is what I have been up to.

* Principles of Architecture II course. A week-long intensive internal course about software and infrastructure architecture. Maybe my fault for expecting a lot more from this, but on the whole I was left unimpressed.

* BizTalk 2004 CSS. Internal self-study course, for which I was given a ton of material and resources. Did not have high expectations, but found it rather interesting. Good to know about the technology but, no, I have no plans to sign up for any project using it (too much mouse-pushing for my liking). Very powerful tool and its price tag reflects that...

* Completed the SharePoint project I was working on. This was a big win, as the client was delighted with the work I did there…

* Working for Avanade means that you *must* get Microsoft certified. So I thought I'd play game, even though I've always looked down on these. So, after 3 MCP exams, I am now a MCAD (Microsoft Certified Application Developer). To be honest, I did have to study for the exams and I did learn quite a bit (in a broad, shallow sense). Not that I have some new found respect for people that hold the certification, but I don't have any contempt either (if that makes any sense :-S).

* As well as speaking at the "swimming pool" room at Microsoft’s offices in London, I also attended an MSDN event there on Indigo (or WCF, if you like) by Mike Taulty and Mike Ormond. A lot of great events take place there so, if you are in London, you should be monitoring the activity...

* Speaking of "speaking", I've been waiting for my name to appear on the official list before sharing this but I am fed up of waiting now so here it is: I am on the INETA speaker list! If you run a user group, feel free to contact INETA to arrange for me to speak on a topic of interest to you...

* While I didn't attend DevDays in London, that week I had the pleasure of having dinner with a handful of smart people organised by the Wintellect guys (Jeffrey Richter wasn't there but Jeff Prosise & Justin Smith were :-)).

* Anyone that has been through a house purchase in the UK knows how hectic the procedure is. Well, I went through the house hunting, negotiation, surveys, mortgage applications, estate agent fighting and solicitor chasing... all this for a flat in London. It sounded like a great idea back in October and a few days ago we reached the point where I must sign the contract and transfer the money. Guess what I did? I pulled out! This has cost me unbelievable amounts of stress, time and money. It just didn't make sense anymore due to another change in my life as summarised next.

* A couple of days ago I handed in my resignation to Avanade. Maybe my career desires will change one day and/or maybe Avanade UK will have a different direction one day. Should such a day arrive, I'll be happy to go back. Working for Avanade for 6 months has been an experience...

* Later today I will be at the DNUG meeting if you want to say hi

* Next Monday I will be attending a private 2-day MVP event held in Cambridge. I am looking forward to catching up with all of you who will be there :-D

Speaking next Monday 20th February

Mon, February 13, 2006, 09:38 AM under Events
If you are in London (or anywhere in the vicinity) come join me at this free developer event. It takes place in Soho at Microsoft’s premises (swimming pool room). Download a map with directions here (pdf).

First up is Ted Neward at 18:30 (and I for one am looking forward to Ted’s session). My excitement continues after he is done as there is free pizza at 19:30 :-)

At 20:00 it’s mobility time! In terms of actual title, I am currently leaning towards:

“.NET Compact Framework with Visual Studio 2005 for Desktop Developers”
(zero previous knowledge of mobility or NETCF required)

Sign up now!

1.0.4292.2

Sun, January 15, 2006, 01:56 PM under MobileAndEmbedded
While today we are on v2 of the .NET Compact Framework (2.0.5238.0), you can of course have v1.0 (there never was a v1.1) side by side on the target.

NETCF v1 had three service packs and the SP3 version number is 1.0.4292.0 (for the full list of version numbers and how to determine what is on your target see this).

So it was a surprise to me when I run cgacutil.exe (in the Windows directory) on my jasjar and it reported the correct v2 version but a new (to me) v1 version: 1.0.4292.2

It turns out (thanks Nazim Lala) that revision 2 is specific to Windows Mobile 5.0 (a loader security fix).

When I created a v1 app and run it on the device the plot thickened: my call to System.Environment.Version.ToString() returned 1.0.4292.0 – so which is correct, the API or cgacutil?

The answer is both. From an end user/developer point of view, nothing has changed so the hard-coded version returned by the API remains (by design) the same (thanks Jeremy Hance).

(so now you know :-)

Best of "The Moth" 2005

Sun, January 1, 2006, 12:53 PM under Personal
Intro same as the one from exactly a year ago (replace 2004 with 2005). Chronologically again, here they are:

01. A sample of a great VS2005 feature.

02. The A to Z for troubleshooting your netcf memory issues.

03. With 2006 slated as the year of mobility, all you desktop gurus start catching up.

04. Not something you'll use everyday, but cool nonetheless.

05. There is still no great answer, but you can read about all your options for web serving with netcf.

06. ThreadPool differences between full and CF v1 framework and how CF v2 brings parity.

07. Just so my poor VB6 friends know they can do polymorphism without implementation inheritance.

08. While personally I think MSFT needs one more version before they dominate the phone OS market, if you are starting today, check out my smartphone quickstart.

09. mscorlib trivia (even though I wrote that drunk as a skunk ;-)

10. VB.NET compiles to IL badly.

11. WindowsMobile.Forms class diagram.

12. ‘Partial types’ usage.

13. Commentary on the .NET moniker being dropped.

14. Shameful plug to my msdn article.

15. Generic type parameter vs. System.Type

16. Getting started with netcf development for full framework developers.

Thanks for staying tuned. Roll on 2006...

Current Project

Fri, December 23, 2005, 04:06 PM under Career
So I described my commuting to my current client, how about the project?

You would have thought that if you hired a .NET Compact Framework MVP, you would take advantage of their skills in a mobility project; something that targets Windows Mobile 2003 or v5 or even a custom WinCE (v4 or v5) device. Nope.

I have also done a lot of work on the desktop with .NET (including COM Interop, remoting etc) so maybe something in that area? Nope. Anything to do with thick or smart clients where my interest and experience lies? Nope.

Maybe take advantage of the fact that I've been using VS2005/.NET v2 constantly since March 2004 (any project utilising Whidbey is my game)? Nope.

Instead, what I am working on is a web application (web, moi?) using SharePoint (server product, moi?). From a developer's perspective, SharePoint 2003 sucks like nothing I've ever used from Microsoft before (I am considering not putting it on my CV to avoid having to go near it ever again!). That is the life of the consultant apparently. You get to work on whatever is in demand.

To be perfectly honest, I don't really *mind* working on this project. I've been in my comfort zone (embedded space) for too long and it gives me chance to prove again that I can quickly pick up a technology and deliver. It just took me by surprise and combined with the whole commuting thing it created a bad taste in my mouth. By the way, I am leading the small team and while I won't mention the client's name rest assured every single one of you (aged 14 to 114) know them. The work environment is second to none and the people there are great so that balances out things...

My mate Steve assures me the next one will be the biggest mobility deployment project in the world. Let's see...

I should finish by saying that this is my day project. By night/weekend, I keep doing netcf work and stay tuned for some exciting stuff coming in SDF v2.0 from OpenNETCF.