Я думаю, вы можете сделать это, указав цели сборки, а не используя события сборки. Попробуйте создать цель AfterClean для удаления сгенерированных файлов конфигурации и цель BeforeBuild для их создания. Убедитесь, что вы настроили зависимость файла для цели BeforeBuild, поэтому msbuild знает, что он должен запускать только этот шаг, если файл отсутствует.
Я на самом деле не пробовал это, но я верю, что msbuild будет запускать цель, только если целевые файлы не существуют. Когда вы перестраиваете, процесс очистки будет вызываться, а в свою очередь - цель AfterClean.
Подробнее о задачах построения here. Единственным реальным недостатком использования целей сборки вместо событий является то, что они не видны нигде в пользовательском интерфейсе VS - вы найдете их только при проверке файла проекта.
Возможно, существует более прямое решение, связанное с событиями - посмотрите блог команды msbuild here.