I do empathize with your experience but you need to look at life in a different dimension. Much as you have been in this relationship for long, you have a choice to determine your destiny. I imagine that you have been thinking of her as your soulmate, which I appreciate, however you need to play your cards carefully.
Every relationship has traffic lights; red, orange and green. Considering your experience, its wise to interpret the situation to determine whether you should go ahead, wait or quit. Whichever decision you will take, first evaluate yourself to spell out your position in preventing or fostering her behaviour.
You need to consider how you met and how you have been involved in building this relationship; review her value system, her family background and her future prospects.
More often than not, such a lady may have had a difficult childhood so she feels she can run her life free of any control which when you want to intervene you take her back to her painful experience and her response acts as a defence mechanism to protect her emotionally.
Secondly, you may need to define your relationship to find out if she feels the same way about you, or you are simply imposing yourself on her and shes indirectly telling you off; or theres no strong bond in your relationship to give her reason to change.
You may need to consider taking more interest in her social life and if possible try to go out with her and agree on the time to be back home. Revisit the beverages she takes, the places where she hangs out and model to her the expected behaviour instead of leaving her to figure it out.
Lastly, try to befriend some of her friends and count on their support to help her modify her life; in case you feel she is not ready to change, then plan to move on.
Build a strong support system of family and friends, as well as mobilising self-confidence to cushion you, for its a tough decision which is likely to leave you with emotional, social and physical pain.
But you can minimise its effects with better planning.