Как подавить оптимизацию JIT в .NET Core

#asp.net-core #iis #.net-core #coreclr #dnspy

#asp.net-core #iis #.net-core #coreclr #dnspy

Вопрос:

Я не могу найти способ подавить оптимизацию JIT в процессе .NET Core 2.2. Это не позволяет мне подключаться к отладчику в рабочей среде и просматривать все локальные переменные.

В .NET Framework я мог бы добавить INI-файл с тем же именем, что и DLL, которую я хотел предотвратить оптимизацией, как показано здесь . Но, похоже, это не работает с .NET Core.

Отладчики, такие как Visual Studio и dnSpy, могут подавлять оптимизацию при запуске процесса, поэтому это должно быть возможно каким-то образом. В качестве обходного пути я мог бы запустить процесс с помощью отладчика, но я использую IIS и не могу найти способ запустить с его помощью w3wp worker.

Ответ №1:

Попробуйте установить переменную среды COMPlus_JITMinOpts=1 для процесса

Комментарии:

1. Вы пытались (если это вообще возможно) развернуть отладочную сборку в рабочей среде? Это должна быть какая-то переменная среды… Вы можете запустить процесс с помощью отладчика, в котором вы заметили, что оптимизация JIT подавлена, а затем заставить приложение выводить все свои переменные среды.

2. Также убедитесь, что ваше приложение действительно видит COMPlus_JITMinOpts=1 , заставив приложение выводить это значение на консоль или где-то еще.

3. @AlexBuyny Да, я убедился в регистрации 🙂 Что касается развертывания сборки отладки — да, это работает, но это именно то, чего я хочу избежать. Я хочу иметь возможность изменять без повторного развертывания.