Вопрос или проблема
У меня VS 17.10, и я использую это расширение в своем asp.net core (.net 6), чтобы включить компиляцию razor во время выполнения: RazorRuntimeCompilationMvcCoreBuilderExtensions.AddServices(builder.Services);
Однако это значительно замедляет загрузку моего приложения, только во время отладки. Моей машине требуется около 46 секунд, чтобы загрузить одну конкретную страницу razor, в то время как у нескольких моих коллег это занимает всего около 8 секунд. Использование процессора и памяти не ужасное. У нас у всех схожие системы. Я также сбросил настройки VS без результата.
Существует множество страниц Razor (дочерних страниц), и я получаю эти сообщения о загрузке для примерно 50 сборок (соответствующих различным дочерним страницам):
...exe' (CoreCLR: clrhost): Загружен 'y3bjdb4m.e2v'.
...exe' (CoreCLR: clrhost): Загружен '1kxxxkso.iuc'.
...exe' (CoreCLR: clrhost): Загружен 'asqc3qse.c1z'.
...exe' (CoreCLR: clrhost): Загружен 't4bl1glf.nuh'.
...exe' (CoreCLR: clrhost): Загружен 'bxbooev3.eeq'.
...exe' (CoreCLR: clrhost): Загружен 'ygghqrqy.jkp'.
...exe' (CoreCLR: clrhost): Загружен 'bnffzdaf.eyb'.
… которые, похоже, замедляют загрузку страницы.
Есть идеи, какая настройка в моей системе может это замедлять?
Ответ или решение
Замедление работы отладчика в Visual Studio с включенной компиляцией Razor в режиме выполнения
Введение
Ваша проблема с замедлением загрузки страниц Razor в Visual Studio 17.10 на .NET 6 с включенной компиляцией Razor в режиме выполнения может быть вызвана множеством факторов. Понимание их поможет вам оптимизировать процесс разработки и отладки, чтобы обеспечить более быструю и эффективную работу. Резкие различия во времени загрузки между вашими коллегами и вами могут указывать на специфические настройки или конфигурации вашей системы.
Возможные причины замедления
-
Количество загружаемых сборок:
Указание на загрузку множества сборок (до 50) может говорить о том, что компилятор Razor работает с большим объемом кода, чем у ваших коллег. Это может привести к значительному времени, затрачиваемому на компиляцию и связывание. -
Параметры конфигурации Visual Studio:
Убедитесь, что ваши настройки Visual Studio не отличаются от настроек ваших коллег. Особое внимание уделите таким параметрам, как:- Использование режима "Debug" вместо "Release".
- Настройки отладчика, включая "Enable Just My Code".
- Включение/отключение "Enable .NET Framework source stepping".
-
Системные параметры:
Конфигурация вашей машины может оказаться более узким местом. Хотя вы упомянули, что используете схожие системы, не забудьте проверить:- Драйверы видеокарт и возможность аппаратного ускорения.
- Неверные или избыточные процессы в фоновом режиме, потребляющие ресурсы (например, антивирусное ПО).
- Наличие системных обновлений и патчей.
-
Проблемы с проектом:
Если есть проблемы с самим проектом, такие как зависшие ссылки или неправильно настроенные зависимости, это также может влиять на время компиляции. Попробуйте:- Очистить и пересобрать проект (Clean & Rebuild Solution).
- Проверить на наличие ошибок в коде и том, как и где используются Razor-разметки.
-
Кэширование и сборка:
Проверьте, как настроено кэширование для Razor. Если кэширование отключено или настроено неправильно, это может вынуждать компилятор постоянно пересобирать страницы при их обращении. Рассмотрите возможность применения атрибутов кэширования для ваших страниц. -
Режим отладки:
Возможно, определенные элементы отладчика работают некорректно. Попробуйте задействовать менее интерактивные методы отладки, такие как "Logging" вместо полного отладчика для мониторинга, что может упростить процесс.
Заключение
Чтобы устранить замедление отладки с включенной компиляцией Razor:
- Проверьте конфигурацию Visual Studio и системные настройки.
- Примените оптимизации к проекту.
- Убедитесь в наличии всех необходимых обновлений для системы и программного обеспечения.
Если у вас по-прежнему возникают проблемы, возможно, следует рассмотреть возможность воспроизведения вашей среды на другом устройстве или обратиться к поддержке Microsoft для более детального анализа.
На каждом этапе следите за временем загрузки и производительностью, чтобы выявить, какие изменения приводят к улучшению. Это поможет вам точно определить узкие места и оптимизировать вашу среду разработки.