async Task <IShellDescriptor> GetOrUpdateDescriptorAsync(string[] featureIds) { // Get existing descriptor or create a new one var descriptor = await _shellDescriptorManager.GetEnabledDescriptorAsync(); // Add features to our descriptor foreach (var featureId in featureIds) { var feature = await _shellDescriptorManager.GetFeatureAsync(featureId); descriptor.Modules.Add(new ShellModule(featureId, feature.Version)); } return(descriptor); }