Start here. This is the direct spoken answer to practice first.
Why this question matters
Shared libraries multiply the impact of changes. A small breaking change can affect many services.
For a shared .NET library, I would use clear package versioning and avoid breaking public APIs casually. Consumers should know whether a release is a patch, new feature, or breaking change. The package should have release notes and be published through a controlled pipeline. Services should update intentionally rather than automatically pulling risky versions.