keep the serial port out of the common code or
surround it with #if MF_FRAMEWORK_VERSION_V4_3 #else
I thought serial port would be in System.IO?
In any case, writing common code for a serial port between two different hosts may be pushing it, but I guess it could be done. I have mixed feelings on the utility of this. I would tend to write more robust code where resources are not constrained (error handling, longer messages, bigger buffers), but I have no idea as to your reasons to not want to do that.