Well, the rather obvious solution here is to use a portable programming language for as much of the application as possible. No point in locking your product into a single manufacturer's system, especially as design engineers generally prefer better OSs than that one. This pretty much rules out C#, as it's not portable.

Cheers