Могут ли плагины Visual Studio получать уведомления о задачах C++ build/CL / вызовах CL.EXE?
Я хотел бы, чтобы мои процессы cl.exe (процесс компилятора C++) выполнялись с более низким, чем обычно, приоритетом, чтобы потоки пользовательского интерфейса не были затронуты. Я включил /MP сборки для большинства своих проектов и хочу использовать преимущества всех процессоров, но не хочу, чтобы блок был загружен и не использовался.
Сотрудник написал утилиту, которая отслеживает потоки и позволяет пользователям выбирать имена процессов, для которых отбрасываются приоритеты, но мне было интересно, можно ли написать плагин для visual studio, который был бы уведомлен обо всех вызовах CL.exe, чтобы Вы можете программно снизить приоритет.
Так это возможно? VS 2008 - сборка C++ на данный момент.
2 ответа
У вас есть объект BuildEvents, который предоставляет DTE, он будет использоваться для запуска всех типов проектов, но это хорошая точка зрения, чтобы увидеть, работает ли CL. (Есть несколько примеров того, как использовать его в Google Code Search).
Или (и это хакерство, и я не знаю, сработает ли это), вы можете написать заменитель CL.exe, который будет запускать реальный CL с низким / идеальным приоритетом и направлять все параметры к нему.
Хотя это не отвечает на ваш вопрос, я сделал то же самое, что и ваш коллега - написал небольшую утилиту, которая понижает приоритет cl.exe
Вы можете получить исходный код / двоичный файл здесь.