6

Всякий раз, когда я оставляю свой компьютер бездействующим в течение нескольких минут, я возвращаюсь, и мой Process Explorer показывает, что ngen.exe работает и занимает 2 из моих 4 процессоров.

Вопрос: Есть ли способ отключить NGEN.exe в качестве фоновой задачи?

Я хотел бы (как и многие другие в Интернете) скомпилировать все двоичные файлы .net сразу, вместо того, чтобы компьютер «автоматически» делал это каждый раз, когда я оставляю компьютер в режиме ожидания. Я проверял на форумах Microsoft, и пока никто не имеет полного ответа на эту проблему, и у многих возникают те же проблемы.

По-видимому, некоторая библиотека в .net Framework нуждается в перекомпиляции, и она «зависает», загружает процессор и перегружает его снова и снова.

Я только что столкнулся с той же самой проблемой, и есть другая нить, пытающаяся ответить на нее, но она не завершена

Regedit /HKLM / ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ / Microsoft / Windows / Текущая версия / RUN не имеет записи для запуска компилятора .net. Что-то еще должно вызывать запуск ngen.exe.

Может кто-то опубликовать другие места, которые могут запускать это?

Я хотел бы отключить это, как я уверен, что многие другие будут. Я также отключил автоматические обновления в Windows 10.

ОБНОВЛЕНИЕ: Process Explorer говорит, что это то, что работает:

"C:\Windows\Microsoft.NET\Framework64\v4.0.30319\ngen.exe" удалить "C:\WINDOWS\assembly\NativeImages_v4.0.30319_64\Microsoft.Vf‌ 9a08577 #\328b1bc4205‌ c08821860805bf5e6c99‌ e\Microsoft.VisualSt udio.Инструменты.Applicati дополнения.Hosting.ni.dll "/noroot /LegacyServiceBehavior - Виктор 5 минут назад

"C:\Windows\Microsoft.NET\Framework\v4.0.30319\ngen.exe" удалить "C:\WINDOWS\assembly\NativeImages_v2.0.50727_32\Presentation‌ Framewo #\7fa93028119‌ b98117acfd5ea18f15c1‌ 3\PresentationFramew‌ ork.ni .dll "/noroot /LegacyServiceBehavior - Виктор, 4 минуты назад редактировать

"C:\Windows\Microsoft.NET\Framework64\v4.0.30319\ngen.exe" удалить "C:\WINDOWS\assembly\NativeImages_v2.0.50727_64\Microsoft.PowerShel #\23dfb41f48958215c80bbbc0c9177cb2\Microsoft.PowerShell.Команды.Utility.ni.dll "/noroot /LegacyServiceBehavior

Он продолжает бегать снова и снова. - это вывод из Process Explorer. Это очень раздражает, и, кажется, это происходит каждый раз, когда я покидаю свой стол.

ВОПРОС: кажется, что это законные процессы. Кто-нибудь знает способ вручную удалить эти команды удаления и полностью скомпилировать .net framework 1 раз вместо того, чтобы повторять его снова и снова?

ТЕКУЩАЯ ПРОВЕРКА: Я убил процесс и ngentask.exe, затем пошел в Windows\assembly и переместил эти папки Native Image во временную директорию. Я буду держать вас в курсе, если он снова запустится. Скорее всего, если папки NativeImages отсутствуют, он не будет пытаться продолжить удаление этих сборок.

2 ответа2

4

Загрузите скрипт Easy NGEN, запустите его от имени администратора и выберите опцию 1, чтобы выполнить полный запуск Ngen:

Это занимает много времени и выполняет все ожидающие операции ngen. После этого очередь ngen пуста, и вы больше не должны видеть другие задачи.

1

Удаление ключа в реестре - вот что, наконец, сработало для меня. Проблема заключалась в том, что ngen будет пытаться перераспределять память снова и снова для одной и той же поврежденной DLL в реестре. В конечном итоге он будет использовать всю доступную память на компьютере.

Удаление ключа "\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft.NETFramework\v2.0.50727\NGenService\Roots" работало для меня. Остановка запланированной задачи или уничтожение ngen.exe является лишь временной мерой и не решает проблему.

То, как Microsoft могла позволить такой проблеме продолжаться так долго, мне не под силу. Сегодня был первый день, когда поиск дал мне ответ.

Более подробную информацию о проблеме можно найти здесь https://aloiskraus.wordpress.com/2017/12/13/the-case-of-ngen-exe-needing-50-gb-of-memory/

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .