When ReSharper is loaded into Visual Studio it creates own environment where all components live. This environment is represented by Shell type and it's descendants UIApplicationShell and VSShell. One of the primary roles of the shell is to provide access to shell (application-wide) components by implementing IComponentContainer interface. Shell components are initialized when shell is loaded and are disposed when shell is terminated. Component is identified by its interface type. Implementation of the component is choosen depending on shell configuration.
After solution is loaded into Visual Studio, SolutionManager (which is shell component) instantiates solution object implementing ISolution interface. ISolution inherits IComponentContainer as well and provides access to solution components. Their lifetime is the same as lifetime of ISolution, that is from solution load to solution unload.
Along with solution loading, projects contained in solution are loaded, and they also utlize component model. Project components' lifetime is the same as project's - from the moment project is loaded (with solution load, when added to solution or when project is reloaded) until project is unloaded (with solution unload, when removed from solution or manually unloaded while remaining in solution).
Component model
(None)