Недавно я получил новый ПК на работе, и мне пришлось переустанавливать средства разработки и т.д. На ПК установлена Windows XP (blech), и у меня установлены Visual Studio 2010 и .NET Frameworks 2.0, 3.5 и 4.0, каждый со всеми текущими пакетами обновлений и исправлениями. Сама Windows XP также актуальна (если можно так сказать :-)
Одна из повторяющихся проблем, которую я заметил, - это следующее диалоговое окно, которое всплывает после того, как машина некоторое время простаивает :
Я подозреваю, что сбой происходит из-за .NET Framework, выполняющего компиляцию Ngen системных сборок в фоновом режиме, и сбой, когда он достигает одной сборки, в частности.
Я нашел еще одно упоминание об этой проблеме на форумах MSDN, и один из предлагаемых обходных путей - настроить функцию предотвращения выполнения данных в Windows XP на "Включение DEP только для основных программ и служб Windows". Тем не менее, это уже настройка, действующая на моем ПК.
Как я могу диагностировать дальше? Когда я пытаюсь присоединиться к процессу, он уже ушел.
Есть ли другие предложенные или вероятные исправления?
ОБНОВИТЬ:
Я нашел больше информации о ngen здесь и здесь.
В командной строке я запустил следующее: ngen executequeueditems
.. теперь это позволяет мне надежно воспроизвести проблему, а не ждать, пока не выполнится неактивный фоновый ngen.
Итак, когда ngen.exe
попал в следующую запись:
Compiling assembly Microsoft.SqlServer.Management.MultiServerConnection, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91 (CLR v2.0.50727) ...
WARNING: Cannot hardbind to mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 because dependency does not have a native image (check FusLogVw for reason)
Failed to generate native code for dependent image Microsoft.SqlServer.Management.MultiServerConnection, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91 because of the following error: The remote procedure call failed. (Exception from HRESULT: 0x800706BE)
... результатом было следующее сообщение об ошибке:
Принимая во внимание, что другие сборки, которые потерпели неудачу при генерации собственного образа, на самом деле не вызывали сбой, просто сообщение об ошибке.
Итак, конкретная сборка, на которой происходит сбой: Microsoft.SqlServer.Управление.MultiServerConnection.
Что еще я могу сделать? Меня не особо волнует, может ли это быть в данный момент или нет; Я просто хочу остановить это надоедливое повторяющееся диалоговое окно с ошибками сверху. Я уже попробовал:
ngen uninstall Microsoft.SqlServer.Management.MultiServerConnection
,
... но там написано "ОШИБКА: указанная сборка не установлена".
Есть ли способ удалить сборку из очереди ngen, чтобы ngen даже не пытался сгенерировать для нее собственный образ?