private void EnabledDependencyFeatures(List <FeatureDescriptor> enabledFeatures, ShellDescriptor shellDescriptor, FeatureDescriptor featureDescriptor) { foreach (var dependency in featureDescriptor.Dependencies) { if (enabledFeatures.All(x => x.Id != dependency)) { var features = extensionManager.EnabledFeature(dependency); foreach (var feature in features) { enabledFeatures.Add(feature); var shellFeatures = new List <ShellFeature>(shellDescriptor.Features) { new ShellFeature { Name = feature.Id } }; shellDescriptor.Features = shellFeatures; EnabledDependencyFeatures(enabledFeatures, shellDescriptor, feature); } } } }