As a general rule of thumb you should depend in the direction of stability (TheÂ Stable Dependencies PrincipleÂ (SDP)).Â A package should only depend upon packages that are more stable than it is. If something is changing a lot it we should not depend on it. If it isn’t then we can comfortably reference it as a versioned package/assembly.
“But I want to add something to the GeneralFunctions/Domain/Utilities project”
Why? If you are the only one using it then there is no reason for it to be there.
“But someone else may want to use it in the future”
The possibility that someone may is not a good enough reason to put it there. Follow the principle ofÂ You Aren’t Gonna Need ItÂ (YAGNI).Â
“But what if I need to change something that already exists?”
“Software entities (classes, modules, functions, etc.) should be open for extension, but closed for modification” – The Open Closed Principle