Windows Embedded Compact May 2014 Update 35 breaks binary compatibility of Silverlight applications

Warning to everybody using Silverlight: the May 2014 Update 35 for Windows Embedded Compact 7 breaks binary compatibility for Silverlight applications!

You will have to regenerate your SDK and recompile your Silverlight applications, otherwise you will encounter a data abort exception in xamlruntime.dll:

Exception 'Data Abort' (0x4): Thread-Id=05d5006e(pth=c0891b0c), Proc-Id=04680072(pprc=c089196c) 'vplayer.exe', VM-active=04680072(pprc=c089196c) 'vplayer.exe'
PC=4017c64c(xamlruntime.dll+0x0002c64c) RA=40015b54(ceperf.dll+0x00005b54) SP=0007f91c, BVA=00000000

The bigger problem is that all of the Silverlight applications shipped with WEC7 (video player, music player, photo viewer, etc) are shipped as pre-compiled executables and are not build on the spot. You will have to do a manual build of public\mediapps\oak\samples\cemp followed by a clean sysgen of your OS Design to get the photo viewer, video and music player to work again.

Of course these executables should have been recompiled and included in update 35. Note that I only identified the media player applications, but there are of course many more control panel items and executables that need to be updated. I hope a next update will update all of the Silverlight dependent pre-compiled files in the WINCE tree!

WARNING: You may be tempted to do a "Build and Sysgen" (blddemo without -q) to build the entire tree. Don't ever do this! It will leave your WINCE tree in a undetermined state. Read this to understand why. In fact you should remove the dangerous build commands from the Advanced Build menu. Read this to learn how.

Follow these steps:

  1. Uninstall the SDK for your OS Design
  2. Update your WEC7 tree with the latest updates
  3. Open your OS Design
  4. In the Solution Explorer, browse to \public\mediaapps\oak\samples\cemp
  5. Right click cemp and choose "Rebuild (build -c)" from the context menu (do this for both a debug and retail build config!)
  6. Now select the root of your OS Design in the Solution Explorer
  7. And click "Clean Sysgen (blddemo clean -q)" from the Build->Advanced Build Commands menu (or Custom Build Commands menu if you followed these instructions)
  8. Build the SDK for the OS Design (make sure you built the dependent build configuration first)
  9. Close all Visual Studio instances
  10. Install your new SDK
  11. Recompile all of your Silverlight applications that were built against the previous SDK

Repeat step 5 for any other Silverlight components that do not work anymore after applying Update 35 (May 2014).

Comments

Thanks very much for sharing these instructions.

Hi Michael,
Thanks for your wonderful analysis & posting. i really appreciate your effort and it really helped me to solve my problem.

Hi Michael,

Thank you so much for posting this article.

This saved me from pulling my hair out over a set of problems I had no idea why they were happening. :-)

Samie