Exemple #1
0
        /// <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);
            }
        }