This is not 100% .... most importantly, 3.5 and 3.5SP1 include service packs to 2.0 and (later) 3.0; these changes are not all trivial.
As a key; if you start using types in SP1 even in what you think is 2.0 , it will fail on the “right” client 2.0. There is an FX cop tool to help avoid this, IIRC. Secondly, there are (in the service pack) changes in the depths of the kernel - for example, the number of pool threads (or is it the size of the pool thread stack ... something in this area) that can bite you if you're out of luck.
, 2.0 ; () , (SP1/SP2)...
, ; .NET 3.5, 2.0; -p
, ( ), .