Я решил эту проблему, вызвав пакетный скрипт:
$(ProjectDir)register.bat "$(SolutionDir)"
Пакетная:
regsvr32 "%~1ThirdParty\comdll1.dll" /s
if %ERRORLEVEL% NEQ 0 GOTO Exit
regsvr32 "%~1ThirdParty\comdll2.dll" /s
if %ERRORLEVEL% NEQ 0 GOTO Exit
regsvr32 "%~1ThirdParty\comdll3.dll" /s
EXIT:
Проблема в том, что Visual Studio может проверить значение ERRORLEVEL только один раз, в конце. Если comdll2 не удалось зарегистрировать, но comdll3 успешно, ERRORLEVEL будет 0 и сборка не будет завершена.