Esta respuesta se basará en la suposición de que está versionando sus dlls.
Si establece SpecificVersion en true (que es el valor predeterminado al agregar una referencia), el proyecto hará referencia a ese dll con una versión particular (digamos por ejemplo 1.0.0.0). Si, en un momento posterior, se te da un dll nuevo (digamos 1.0.1.0), entonces tendrás que eliminar la antigua referencia dll y agregar la nueva referencia. Esto se debe a que el proyecto busca específicamente 1.0.0.0 cuando tiene una nueva versión 1.0.1.0.
La alternativa a esto es establecer SpecificVersion en falso, lo que le indica al proyecto que busque la última DLL disponible y la use. El problema con esto es que ahora se requiere que el proyecto "cace" en varios lugares para el archivo DLL al que ha hecho referencia, lo que puede aumentar su tiempo de compilación. Hará esto aunque sepa la ruta del dll al que ha hecho referencia. No estoy seguro de si esto es un error o si esto se hace por diseño. Es posible que esté comprobando si hay dlls más nuevos además del que ha mencionado (quizás en el GAC o en otro lugar).
Aquí hay un article que describe este problema con más detalle.
En general, es bueno hacer referencia a versiones precisas de sus dependencias, para protegerse contra [software rot] (https://blog.heroku.com/archives/2011/6/28/the_new_heroku_4_erosion_resistance_explicit_contracts). Es por eso que Ruby tiene 'Gemfile.lock', Python' requirements.txt' y Nodejs 'npm-shrinkwrap.json'. –
Véase también http://stackoverflow.com/a/24022135/284795 "Una de las cosas más importantes que debe saber es que SpecificVersion es una propiedad que tiene efecto en tiempo de compilación y no en tiempo de ejecución". –