I recently had to migrate a PRISM based Silverlight 4 out of
browser app to Silverlight 5. (Yes we know the end is nigh but what
the heck...).
The only external dependencies the application had where on
- Prism 4
- Silverlight 4 toolkit
And because I was using Model View View-Model,
- System.Windows.Interaction.dll from the expression blend SDK.
So after all how difficult could that be?
At the time of writing this, there is no prism version specifically
for Silverlight 5.
Silverlight 5 installation
First I updated my rig to Silverlight 5 by installing the Silverlight 5 Tools for Visual Studio 2010 SP1
Then I installed the Silverlight Toolkit.
No issues so far.
I then loaded up the solution in Visual Studio and tried to compile it. WCF RIA Services then started to grumble about some “CreateRIAClientFilesTask” task failing unexpectedly.
Silverlight 5 installation
First I updated my rig to Silverlight 5 by installing the Silverlight 5 Tools for Visual Studio 2010 SP1
Then I installed the Silverlight Toolkit.
No issues so far.
I then loaded up the solution in Visual Studio and tried to compile it. WCF RIA Services then started to grumble about some “CreateRIAClientFilesTask” task failing unexpectedly.
Ok my bad.
I had not set the target Silverlight version. I set this to 5 for every Silverlight client project in the solution.
At this point, the solution compiled successfully.
However, when I tried to run the application another error popped up.
The actual error message was ReflectionTypeLoadException was unhandled by user code.
At this point, I gave up and started crying like a baby.
Yeah right. I needed to show PRISM some love.
First I need to compile a version of PRISM for Silverlight 5. So I downloaded the source code for prism and rebuild it for Silverlight 5 and then replaced the PRISM references with the new Silverlight 5 ones. Then I tried again. Not working.
Dummy, I had forgotten about the Silverlight Toolkit. I replaced the Silverlight Toolkit 4 references with the Silverlight Toolkit 5 ones and tried again. Still not working.
Ahhh, System.Windows.Interaction needs to be updated as well. Ok so I installed Expression Blend 5 beta and got a copy of this DLL and replaced it.
After that I started the app and presto it worked.
Now after some fist pumping, I have noticed a child window not correctly centred after a resize? Worked perfectly in version 4. Ok will have to fix that. Not a perfect world.
Final advice, wait for a Silverlight 5 version of PRISM if you can but then again we are in this profession because we crave the complexity...
James
At this point, I gave up and started crying like a baby.
Yeah right. I needed to show PRISM some love.
First I need to compile a version of PRISM for Silverlight 5. So I downloaded the source code for prism and rebuild it for Silverlight 5 and then replaced the PRISM references with the new Silverlight 5 ones. Then I tried again. Not working.
Dummy, I had forgotten about the Silverlight Toolkit. I replaced the Silverlight Toolkit 4 references with the Silverlight Toolkit 5 ones and tried again. Still not working.
Ahhh, System.Windows.Interaction needs to be updated as well. Ok so I installed Expression Blend 5 beta and got a copy of this DLL and replaced it.
After that I started the app and presto it worked.
Now after some fist pumping, I have noticed a child window not correctly centred after a resize? Worked perfectly in version 4. Ok will have to fix that. Not a perfect world.
Final advice, wait for a Silverlight 5 version of PRISM if you can but then again we are in this profession because we crave the complexity...
James
Controlling complexity; not creating it

