The way you formulated it, the problem looks contradictory, not having a solution. You want to change the version of DLL but you don't want to change anything else? If your interfaces implemented by an assembly and usage are the same, the change of the code using it is not needed; if the interface is changed, the using code should be changed anyway. Isn't it logical?
To start with proper version management, you should understand, that there is no such thing as "DLL version". There is assembly and file version; see you AssemblyInfo.cs file. I suggest you use assembly version only. You need to organize software in layers by their dependency and develop a strategy based on version number. For example, increment of build version mean "cosmetic" changes not requiring any change in dependent layers, minor version might be incremented for change in behavior, and major version could mean the change in interfaces requiring change in other layers. Something like that. You can also develop support utilities and put them in your project build steps: check up of version consistency, etc. You can read all meta-data during run time, including assembly versions. This is a matter of a big article, but I hope you got an idea.