If you sit down and say right I'm going to do a piece of platform independant piece of software, and in order to avoid platform dependancies I'm going to effectively do it in parallel.
If however, you've developed it for one platform, got some market success and see an opportunity to go cross platform, something will almost certainly have to go.
Given option two is the norm...
In a non trivial application, what .NET 2.0 to 3.5 changes will hit you if you support both.
There are some, and they a critical functionality wise, and there's little chance of you predicting and preaparing in advance for them.
A simple one is in 3.5 you can only use named pipes for inter process comms not not across machines with WCF.
So what are you gonna do now? You 2.0 design will work , so will your 3.5 one. If you've got a brain all that stuff will be hived off into one place.
iF you are lucky the connection change (other than instantiating it) will not break anything. But you won't just be porting your existing design.....
What the 'Vista debacle' actually showed is that the third parties we rely on to have a platform/version agnostic abstraction, don't give a crap that we do.
Keep Up with TechRepublic