Опытный разработчик не так давно зашёл в .Net и поставил цель получить сертификат Microsoft. Свой ежедневный прогресс он описывает на канале .Net Разработчик. Заметки об изученном материале, советы по повышению производительности и поддержке мотивации, ин
День 1147.
Улучшаем Производительность Сборки в Visual Studio. Окончание
Начало
Другие советы
1. Это может показаться очевидным, но такие вещи, как антивирус или запуск под виртуальной машиной, могут значительно замедлить все задачи разработки, особенно сборки.
2. В окне Options > Projects and Solutions > Build and Run (Параметры > Проекты и решения > Сборка и запуск):
- Убедитесь, что вы используете параллельные сборки.
- Убедитесь, что отмечен флажок Only Build Startup and Dependencies on Run (Собирать только стартовый проект и зависимости при запуске).
3. По умолчанию Visual Studio компилирует каждый проект в отдельный каталог .\bin\Debug и копирует туда все сборки, на которые ссылается проект. Это было настоящим убийцей производительности сборки в старых версиях VS. Надеюсь, это было исправлено. Тем не менее, если на проект P ссылаются N других проектов, существует N+1 файлов сборки P. Мало того, что это трата ресурсов, но также может быть, что версии станут рассинхронизированы, например, из-за того, что некоторые проекты были выгружены в обозревателе решений. Это может привести к неожиданному поведению во время выполнения, например к возникновению MissingMethodException. Поэтому лучше установить, чтобы все проекты решения (кроме тестовых) использовали один и тот же выходной каталог ..\bin\Debug. Таким образом, каждая сборка будет существовать в единственной версии.
Горячая перезагрузка
Благодаря новой функции горячей перезагрузки .NET (ранее известной как Edit and Continue) цикл [написание кода — сборка — запуск — достижение состояния для тестирования — тестирование] сокращается, т.к. шаги [сборка — запуск — достижение состояния для тестирования] могут быть пропущены в многих сценариях редактирования (но не всегда).
При горячей перезагрузке изменения исходного кода отслеживаются, компилируются и внедряются в исполняемые двоичные файлы. Внесение изменений с помощью горячей перезагрузки выполняется значительно быстрее, чем пересборка соответствующего проекта.
Большую часть времени модификации исходного кода между двумя сборками представляют собой крошечную часть пересобираемого кода. Можно ожидать, что в будущем конвейер сборки сможет повысить производительность инкрементной сборки за счет внедрения модификаций кода в двоичный файл вместо пересборки всего файла. Но уже в Visual Studio 2022 можно включить горячую перезагрузку, чтобы ускорить выполнение тестов, пропуская дорогостоящие этапы сборки для поддерживаемых типов изменений. Обратите внимание, что эта функция все ещё является экспериментальной и работает только для .NET 6.
Источник: blog.ndepend.com/improve…formance