It would be better to have an interface/class type/string keys shared by ServiceControl.Monitoring like ServiceControl.Monitoring.Contracts and version this to prevent such failures.
If this was only build/test dependency I'm ok with this approach. I'd prefer not to go into real dependencies for a single class. Also, we could use SC.Monitoring.Data approach like source shipping.
The contract for metadata isn't shared and based on a class that isn't supplied by ServiceControl.Monitoring which results in bugs like https://github.com/Particular/NServiceBus.Metrics.ServiceControl/pull/41/files
It would be better to have an interface/class type/string keys shared by ServiceControl.Monitoring like
ServiceControl.Monitoring.Contracts
and version this to prevent such failures.