Я сталкиваюсь с той же проблемой. Для меня это, кажется, вызвано наличием двух проектов с одинаковыми именами, один из которых зависит от другого.
Например, у меня есть один проект с именем Foo, который производит Foo.lib. Затем у меня есть другой проект, который также называется Foo, который производит Foo.exe и ссылки в Foo.lib.
Я наблюдал за активностью файла с Process Monitor. Кажется, происходит то, что Foo (lib) создается первым - это правильно, потому что Foo (exe) помечен как зависящий от Foo (lib). Это все нормально и успешно собирается, и помещается в выходной каталог - $ (OutDir) $ (TargetName) $ (TargetExt). Затем Foo (exe) запускается для восстановления. Ну, перестройка - это чистая, за которой следует сборка. Кажется, что «чистым» этапом Foo.exe является удаление Foo.lib из выходного каталога. Это также объясняет, почему работает следующая сборка, которая не удаляет выходные файлы.
Ошибка в VS, я думаю.
К сожалению, у меня нет решения проблемы, так как оно связано с перестройкой. Обходной путь - вручную выполнить команду «Очистить», а затем «Построить».