tags:

views:

1210

answers:

3

Exception is occuring only on my machine inside a referenced .dll: Method not found: WaitHandle.WaitOne(Int32)

This appears to be a .NET runtime version problem but I've installed .NET 3.5 and restarted and am still seeing the same issue. Gacutil shows mscorlib Version 2.0.0.0.

We have modified the code to call the two parameter WaitOne() API and things are working on all machines. However, it would be helpful to know why some machines with .NET 3.5 installs do not contain the single parameter version of this function.

+6  A: 

From MSDN it looks like WaitHandle.WaitOne(Int32) was added in SP1. Either check for this in the source, the installer, or use the 2 parameter version.

Dour High Arch
that's exactly the problem
Scott Weinstein
A: 

I found a Google Groups result that may be applicable.

Sean Bright
A: 

Thank you for the suggestions.

The Google Groups post also points to a framework compatibility issue with the API (.NET 2.0 SP2.) To reiterate, after installing 3.5 on the machine we are still seeing the exception. .NET 3.5 should contain all API additions from 2.0 SP2.

From the MSDN page: Supported in: 3.5 SP1, 3.0 SP2, 2.0 SP2

In the future, if you are not answering your own question, you should update the question itself instead of posting an answer.
Sean Bright
Base 3.5 does not have additions from .Net 2.0 SP2. You need to install 3.5 SP1.
Dour High Arch