There really is no easy way to resolve this. The microservices are coupled at a much deeper layer than they should be. Reducing the maintenance cost means properly decoupling these things so that microservices are coupled to each other via web API endpoints or message brokers. You and your organization will need to reorient your perspective on code reuse.
Any change to a monolith requires the whole monolith to be deployed. As a result, it becomes very easy to couple code between modules in a monolith. Even loosely coupled code changes require the whole thing to be packaged, retested, and deployed. Microservices change the economics of coupling because coordinated deployments for multiple services are more costly in time and effort — the beating heart of your question. While shared libraries of code spanning wide swaths of behavior can be viable for a monolith architecture, microservices become even more complicated.
Instead of reusing code at a lower abstraction, for example sharing business classes or service classes, one entire microservice becomes the minimum unit of behavior that gets reused.
Get rid of the shared library.
This thing is a monolith disguised as a dependency.
The boundary of a microservice is defined by the business functions it serves, and the data for which the microservice should be considered the single source of truth. A microservice should wholly own a business process and the necessary data to perform that business process independently of other microservices. It's ok to copy data to other services, as long as those other services all agree on which one acts as the single source of truth for some particular data.
If one service needs to implement behavior owned by another service, then call the other service. Delegate that behavior to the service that owns that business process. Doing this allows you to remove the monolith service layer that leaves these services tangled and intertwined.
Of course, this is a tone deaf answer if your organization can't or is unwilling to support this separation. If this common dependency cannot be eliminated, then I wouldn't consider the ecosystem to be a microservices architecture. You will be stuck with versioned APIs or combining these microservices together. bdsl mentions this in their answer, but you aren't necessarily making a "monolith microservice". Remember the main characteristics of a microservice are that it is independently deployable and scalable. If you can combine these services and achieve that level of autonomy, you can still call it a microservice. It just might be a big one, that's all.
It's too bad that microservice has the word "micro" in it. Too often people equate microservices with tiny applications, and that is not the main characteristic. Smaller applications are a side effect of separating main lines of business functions into independently deployable and scalable units. The independently deployable and scalable unit becomes the unit of code reuse within your organization. Deeper levels of reuse often land you precisely where you are right now.