Your quest boils down to decoupling your domain code from dependencies such as Autofac, CommonServiceLocator. That is a good thing. That said, there is nothing inherently wrong with having a service locator (the domain event registry & raise) in your domain code embedded. You just have to be at peace with the decreased discoverability. There are other ways of achieving a similar goal (e.g. Plain .net events, IObservable entities, ...). The subscriptions should happen from the outside. For example as part of the creation of a child lifetime scope.
Another thing to consider is when the events should be fired. If you're okay with a little bit of latency, you could have the entities collect their domain events internally, and at the end of the operation ask the entities for their collected domain events, dispatching them then and there to the subscribers. Note how this last part could happen in the application layer or at least outside of the domain code. A lot depends on what you're trying to achieve within the event subscribers.
So decoupling is certainly possible, but it requires validating the strategy taken against your requirements. Experiment :)