I had an interesting error crop yesterday on a production server that was only happening there, and not in development and QA. I was using a semaphore to throttle the number of threads that could enter a critical section on code and on this particular machine I was getting this run-time error begin thrown by the framework:
"System.MissingMethodException: Method not found: 'Boolean System.Threading.WaitHandle.WaitOne(Int32)'"
After a bit of googling, the best answer I could come up with is that this method was introduced in the .Net Framework 2.0 SP2. To muddy the waters a little more, you cannot download this service pack for installing as a standalone; its only available in .Net Framework 3.5 SP1. My local installed version of MSDN also doesn't have any mention of this method; the closest overload being bool WaitOne (integer, bool). Some more googling revelead this page in the online MSDN that explains when it was introduced, and where its available.
So, if you are using bool WaitOne (integer) and you're still interested in targeting Framework 2.0 (or 2.0 SP1), change your code to the method that accepts (integer, bool) and pass false as the second parameter.