/// <summary> /// Handles the Click event of the configureFeaturesActivationMenuItem control. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="Microsoft.VisualStudio.SharePoint.MenuItemEventArgs"/> instance containing the event data.</param> void configureFeaturesActivationMenuItem_Click(object sender, MenuItemEventArgs e) { ISharePointProject project = e.Owner as ISharePointProject; if (project != null) { IEnumerable <ISharePointProjectFeature> featuresFromPackage = ProjectUtilities.GetFeaturesFromFeatureRefs(project, project.Package.Model.Features); IEnumerable <Guid> currentlySelectedFeaturesIds = null; List <string> selectedFeaturesIds = ProjectUtilities.GetValueFromCurrentProject(project, ProjectPropertyName); if (selectedFeaturesIds != null && selectedFeaturesIds.Count > 0) { currentlySelectedFeaturesIds = from string featureId in selectedFeaturesIds select new Guid(featureId); } FeaturesPickerDialog picker = new FeaturesPickerDialog(featuresFromPackage, currentlySelectedFeaturesIds); if (picker.ShowDialog() == DialogResult.OK) { IEnumerable <ISharePointProjectFeature> featuresToBeActivated = picker.SelectedFeatures; if (featuresToBeActivated != null && featuresToBeActivated.Count() > 0) { selectedFeaturesIds = new List <string>(featuresToBeActivated.Count()); foreach (ISharePointProjectFeature selectedFeature in featuresToBeActivated) { selectedFeaturesIds.Add(selectedFeature.Id.ToString()); } ProjectUtilities.StoreValueInCurrentProject(selectedFeaturesIds, project, ProjectPropertyName); } } } }
/// <summary> /// Executes the deployment step. /// </summary> /// <param name="context">An object that provides information you can use to determine the context in which the deployment step is executing.</param> public void Execute(IDeploymentContext context) { IPackage package = context.Project.Package.Model; IEnumerable <ISharePointProjectFeature> features = null; List <string> selectedFeatureIds = ProjectUtilities.GetValueFromCurrentProject(context.Project, ActivateSelectedFeaturesProjectExtension.ProjectPropertyName); if (selectedFeatureIds != null && selectedFeatureIds.Count > 0) { List <ISharePointProjectMemberReference> featureRefs = new List <ISharePointProjectMemberReference>(selectedFeatureIds.Count); foreach (string featureId in selectedFeatureIds) { ISharePointProjectMemberReference featureRef = (from ISharePointProjectMemberReference feature in package.Features where feature.ItemId.ToString().Equals(featureId, StringComparison.InvariantCultureIgnoreCase) select feature).FirstOrDefault(); if (featureRef != null) { featureRefs.Add(featureRef); } } if (featureRefs != null && featureRefs.Count() > 0) { features = ProjectUtilities.GetFeaturesFromFeatureRefs(context.Project, featureRefs); } } if (features != null && features.Count() > 0) { context.Project.SharePointConnection.ExecuteCommand <FeatureActivationInfo>(DeploymentSharePointCommandIds.ActivateFeatures, CreateFeatureActivationInfo(features, context.Project)); } else { context.Logger.WriteLine("No features selected for activation.", LogCategory.Status); } }