public MSBuildProjectManager(
            [ImportMany] IEnumerable <ProjectConfigurationProvider> projectConfigurationProviders,
            ProjectInstanceEvaluator projectInstanceEvaluator,
            ProjectChangePublisher projectConfigurationPublisher,
            OmniSharpForegroundDispatcher foregroundDispatcher,
            ILoggerFactory loggerFactory)
        {
            if (projectConfigurationProviders == null)
            {
                throw new ArgumentNullException(nameof(projectConfigurationProviders));
            }

            if (projectInstanceEvaluator == null)
            {
                throw new ArgumentNullException(nameof(projectInstanceEvaluator));
            }

            if (projectConfigurationPublisher == null)
            {
                throw new ArgumentNullException(nameof(projectConfigurationPublisher));
            }

            if (foregroundDispatcher == null)
            {
                throw new ArgumentNullException(nameof(foregroundDispatcher));
            }

            if (loggerFactory == null)
            {
                throw new ArgumentNullException(nameof(loggerFactory));
            }

            _logger = loggerFactory.CreateLogger <MSBuildProjectManager>();
            _projectConfigurationProviders = projectConfigurationProviders;
            _projectInstanceEvaluator      = projectInstanceEvaluator;
            _projectConfigurationPublisher = projectConfigurationPublisher;
            _foregroundDispatcher          = foregroundDispatcher;
        }