AFAIK, Visual Studio обнаруживает результаты событий сборки по коду возврата программы. Если программа возвращает 0, событие сборки прошло успешно. Сгенерируйте соответствующий код возврата в вашей утилите, если что-то не так. Вызывать исключение из консольного приложения также можно, подробности необработанного исключения выводятся в выводе сборки, и сборка останавливается.