public VsMSBuildProjectSystemServices(
            IVsProjectAdapter vsProjectAdapter,
            VsMSBuildProjectSystem vsProjectSystem,
            IVsProjectThreadingService threadingService,
            Lazy <IScriptExecutor> scriptExecutor)
        {
            Assumes.Present(vsProjectAdapter);
            Assumes.Present(vsProjectSystem);
            Assumes.Present(threadingService);
            Assumes.Present(scriptExecutor);

            _vsProjectAdapter = vsProjectAdapter;
            _vsProjectSystem  = vsProjectSystem;
            _threadingService = threadingService;

            if (vsProjectSystem is NativeProjectSystem)
            {
                ReferencesReader = new NativeProjectSystemReferencesReader(vsProjectAdapter, _threadingService);
            }
            else if (vsProjectSystem is CpsProjectSystem)
            {
                ReferencesReader = new CpsProjectSystemReferenceReader(vsProjectAdapter, _threadingService);
            }
            else
            {
                ReferencesReader = new VsCoreProjectSystemReferenceReader(vsProjectAdapter, _threadingService);
            }
            ScriptService = new VsProjectScriptHostService(vsProjectAdapter, scriptExecutor);
        }
        public NetCoreProjectSystemServices(
            IVsProjectAdapter vsProjectAdapter,
            IComponentModel componentModel)
            : base(componentModel)
        {
            Assumes.Present(vsProjectAdapter);

            ScriptService = new VsProjectScriptHostService(vsProjectAdapter, this);
        }
        public CpsProjectSystemServices(
            IVsProjectAdapter vsProjectAdapter,
            Lazy <IScriptExecutor> scriptExecutor)
        {
            Assumes.Present(vsProjectAdapter);
            Assumes.Present(scriptExecutor);

            ScriptService = new VsProjectScriptHostService(vsProjectAdapter, scriptExecutor);
        }
        public VsMSBuildProjectSystemServices(
            IVsProjectAdapter vsProjectAdapter,
            VsMSBuildProjectSystem vsProjectSystem,
            IComponentModel componentModel)
            : base(componentModel)
        {
            Assumes.Present(vsProjectAdapter);
            Assumes.Present(vsProjectSystem);

            _vsProjectAdapter = vsProjectAdapter;
            _vsProjectSystem  = vsProjectSystem;

            _threadingService = GetGlobalService <IVsProjectThreadingService>();
            Assumes.Present(_threadingService);

            ReferencesReader = new VsCoreProjectSystemReferenceReader(vsProjectAdapter, this);
            ScriptService    = new VsProjectScriptHostService(vsProjectAdapter, this);
        }