Diese Antwort basiert auf der Annahme, dass Sie Ihre DLLs versionieren.
Wenn Sie SpecificVersion auf true setzen (was beim Hinzufügen eines Verweises der Standard ist), verweist das Projekt auf diese DLL mit einer bestimmten Version (etwa 1.0.0.0). Wenn Sie zu einem späteren Zeitpunkt eine neue DLL (z. B. 1.0.1.0) erhalten, müssen Sie die alte DLL-Referenz entfernen und die neue Referenz hinzufügen. Dies liegt daran, dass das Projekt speziell nach 1.0.0.0 sucht, wenn Sie eine neue Version 1.0.1.0 haben.
Die Alternative dazu ist, die SpecificVersion auf false zu setzen, was dem Projekt mitteilt, die neueste verfügbare DLL zu finden und diese zu verwenden. Das Problem dabei ist, dass das Projekt nun an verschiedenen Stellen nach der referenzierten DLL "suchen" muss, was die Build-Zeit erhöhen kann. Es wird dies tun, obwohl es den Pfad der DLL kennt, auf die Sie verwiesen haben. Ich bin mir nicht sicher, ob das ein Fehler ist oder ob dies vom Design her geschieht. Es kann sein, zu überprüfen, ob es neuere dlls neben dem gibt, auf den Sie verwiesen haben (vielleicht in der GAC oder woanders).
Hier ist eine article, die dieses Problem im Detail beschreibt.
Im Allgemeinen ist es gut, präzise Versionen Ihrer Abhängigkeiten zu referenzieren, um sich gegen [software rot] zu schützen (https://blog.heroku.com/archives/2011/6/28/the_new_heroku_4_erosion_resistance_explicit_contracts). Aus diesem Grund hat Ruby 'Gemfile.lock', Python' requirements.txt' und Nodejs 'npm-shrinkwrap.json'. –
Siehe auch http://stackoverflow.com/a/24022135/284795 "Eines der wichtigsten Dinge zu wissen ist, dass SpecificVersion eine Eigenschaft ist, die zum Zeitpunkt der Kompilierung und nicht zur Laufzeit wirksam wird." –