Innerhalb einer Solution referenziert man Projekte, keine DLLs.
Zwischen Projekten, also Solution-übergreifend, teilt man gemeinsame Bibliotheken über NuGet Pakete; nicht mehr über einzelne DLLs.
NuGet ist dazu da, dass Du alle notwendigen Abhängigkeiten automatisch aufgelöst bekommst.
Siehe
What is NuGet and what does it do?
NuGet ist nichts anderes als ein Paketmanager, wie sie heutzutage in jedem Ökosystem gibt.
Im NuGet legt man dann die Release-Varianten der DLL ab; und fügt dann noch Symbol-Dateien hinzu, sodass ein Debugging möglich ist.
Veröffentlichen von NuGet-Symbolpaketen mithilfe des neuen Formats für Symbolpakete „.snupkg“
Du kannst natürlich direkt DLLs referenzieren, aber wie Du merkst, musst Du Dich dann selbst um alles kümmern.
Das mag sich erstmal komplex anhören; aber das Erstellen von NuGet Paketen kannst Du vollständig automatisieren.
Siehe
Overview and workflow of creating NuGet packages