I'm developing an winform application for Windows Mobile 5.0 and above. I'm using .Net Compact Framework 2.0 SP2.
I choose that version of compact framework because is installed on Windows Mobile 6.0 rom (in fact, the installed version is .Net Compact Framework 2.0 SP1). Because of that, program will run faster and is going to be easier for the user to install my program.
But I think I can use .NET Compact Framework 3.5 on windows mobile 5.0 and above.
What do you recommend to me?
Microsoft maintains a document titled Devices and Platforms Supported by the .NET Compact Framework which outlines which OS releases the various versions of the .NET CF support and which version you can expect to find in each OS in ROM.
In general there is no right answer to your question.
As you can see from the table, excluding one or two edge cases (Smartphone 2003 etc) each release of the .NET Compact Framework will pretty much run on any Windows Mobile device you can throw at it.
This means the decision really comes down to the development productivity of using a later .NET CF version (LINQ, WCF etc), vs the potential difficulty of distributing and installing the required .NET CF runtime.
The decision of the feasability of installing the .NET CF runtime as part of your application installation process will depend upon your situation. For example in one cost sensitive corporate project I worked on we decided to use the version in ROM since deployments were done over the air and 10,000 devices x a couple of megabytes is a lot of additional bandwidth during app updates etc. Your situation probably has a different set of driving factors.
My first question is, are you targeting general public users or is this an application for a company / employees.
Based on your desire for an easy install, I'm guessing this is for the general public to install on their cell phone?
In that case, it makes sense to go with a version of the CF that is already available on the device.
But, the trade-off is loss of features available in the higher versions of the framework. I think you have to determine if you would really need those features in your application.
If you expand a little on the application and the target users, might get better advice.