2009-03-02 2 views
13

После развертывания веб-сервиса ASP.net на мой рабочий сервер я получил это исключение:System.MissingMethodException - 3,5 SP1 версионирование ад

System.MissingMethodException

Метод не найден: «Boolean System .Threading.WaitHandle.WaitOne (Int32)»

В MSDN documentation состояния:

Информация о версии .NET Framework Поддерживается в версиях: 3,5 SP1, 3.0 SP2, 2.0 SP2

так что причина этой ошибки в том, что мой сервер не был обновлен до последнего пакета обновления.

Возникает вопрос:

Почему начать код? IMO, если версия целевой рамочной программы отличается, приложение не должно начинаться вообще.

Как я могу заверить, что мой код может работать в рамочной версии целевой машины перед JIT?

Это безумие. Я думаю, что Microsoft должна более серьезно относиться к вопросам управления версиями.

ответ

4

То же самое произошло со мной с 1.1 и 1.1 SP1 давным-давно ... Я думаю, что нет хорошего решения, так как сборки имеют одинаковую версию, вы можете попытаться проверить ее вручную, прочитав установленный .net версии или просто установите последние пакеты обновлений на всех ваших dev и производственных машинах.

+0

Благодарим Вас за отзыв. Какая же жалость! –

7

Я согласен. Проблема в том, что номера версии сборки не изменились.

При переходе на .NET 3.5 SP1 я убедился, что разработчики не используют API-интерфейсы, специфичные для SP1, за счет того, что на сервере сборки не установлен SP (то есть версия каркаса сервера сборки соответствует версии рамочной машины). Затем, как только мы были готовы, SP1 был установлен на сервере сборки. Подобный подход мог бы избавить вас от боли.

18

Хотя метод:

Boolean System.Threading.WaitHandle.WaitOne(Int32) 

не существует, метод:

Boolean System.Threading.WaitHandle.WaitOne(Int32, bool) 

существует.

Глядя на отражатель - WaitOne(Int32) звонит WaitOne(Int32,bool) с false в качестве логического значения. Поэтому просто используйте вторую подпись, предоставляя false в качестве логического значения, и вы должны быть в порядке.

+2

У меня была такая же проблема, как и выше, и это решение сработало для меня. Спасибо! +1 – Connell

+2

@Nissim -> Ницца сохранил много времени для меня. – vijaysylvester

Смежные вопросы