private void ConfigureProviderServices(string provider, IServiceCollection services, bool throwOnError = false) { _reporter.WriteVerbose(DesignStrings.FindingProviderServices(provider)); Assembly providerAssembly; try { providerAssembly = Assembly.Load(new AssemblyName(provider)); } catch (Exception ex) { var message = DesignStrings.CannotFindRuntimeProviderAssembly(provider); if (!throwOnError) { _reporter.WriteVerbose(message); return; } throw new OperationException(message, ex); } var providerServicesAttribute = providerAssembly.GetCustomAttribute <DesignTimeProviderServicesAttribute>(); if (providerServicesAttribute == null) { var message = DesignStrings.CannotFindDesignTimeProviderAssemblyAttribute( nameof(DesignTimeProviderServicesAttribute), provider); if (!throwOnError) { _reporter.WriteVerbose(message); return; } throw new InvalidOperationException(message); } var designTimeServicesType = providerAssembly.GetType( providerServicesAttribute.TypeName, throwOnError: true, ignoreCase: false); _reporter.WriteVerbose(DesignStrings.UsingProviderServices(provider)); ConfigureDesignTimeServices(designTimeServicesType, services); }