One small known / used function that I deal with several links sequentially and easily update them, Reference Paths combined with redirect forwarding. Using the reference paths, I can maintain the shared library in a separate library class / package in the source control, which contains the dependent library that we use.
Having my own copy of files that are separately controlled (it is often necessary to include the .license file in the shared libraries folder if it is a paid library) allows new developers to quickly ensure they have the correct version installed on their machine, without contradicting the existing libraries already on your computer.
There is a caveat to this approach, and any additional reference paths you add are not stored in the .csproj file, but instead a .csproj.user file.
Many source version control solutions, such as Team Foundation Server or Vault; these files are not included in the registration process by default. Most source code providers, including the two mentioned, have the ability to change controlled file extensions for each project, as well as worldwide.
The only other caveat is that some source code providers, such as Vault, treat .csproj and .csproj.user files as binary files by default; again, this can be changed, and they can be seen as XML in the case of Vault, allowing you to create merges.
They are processed as XML out of the box in Team Foundation Server.
Brian deragon
source share