Нещодавно я отримав новий комп'ютер на роботі, і мені довелося перевстановити інструменти розробки, тощо. ПК працює під керуванням Windows XP (blech), і у мене встановлено Visual Studio 2010 і. пакети та виправлення. Сама 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.Management.MultiServerConnection .
Що ще я можу зробити? Я не особливо дбаю, якщо він може бути ngen'd або не в цей момент; Я просто хочу, щоб зупинити це дратівне повторення помилки діалогу зверху. Я вже намагався:
ngen uninstall Microsoft.SqlServer.Management.MultiServerConnection
,
... але в ньому написано "ПОМИЛКА: вказана збірка не встановлена".
Чи є спосіб видалити збірки з ngen черга , так ngen навіть не намагатиметься створити для нього рідний образ?