Ejemplo n.º 1
0
        public List <ReferenceModel> ReconcileReferences(IAddRemoveReferencesModel model)
        {
            if (model?.NewReferences is null || !model.NewReferences.Any())
            {
                return(new List <ReferenceModel>());
            }

            return(ReconcileReferences(model, model.NewReferences.ToList()));
        }
Ejemplo n.º 2
0
        //TODO test for simple adds.
        public List <ReferenceModel> ReconcileReferences(IAddRemoveReferencesModel model, List <ReferenceModel> allReferences)
        {
            if (model is null || allReferences is null || !allReferences.Any())
            {
                return(new List <ReferenceModel>());
            }

            var project = _projectsProvider.Project(model.Project.ProjectId);

            if (project == null)
            {
                return(new List <ReferenceModel>());
            }

            var selected = allReferences.Where(reference => !reference.IsBuiltIn && reference.Priority.HasValue)
                           .ToDictionary(reference => reference.FullPath);

            var output = selected.Values.Where(reference => reference.IsBuiltIn).ToList();

            using (var references = project.References)
            {
                foreach (var reference in references)
                {
                    try
                    {
                        if (!reference.IsBuiltIn)
                        {
                            references.Remove(reference);
                        }
                    }
                    finally
                    {
                        reference.Dispose();
                    }
                }
                output.AddRange(selected.Values.OrderBy(selection => selection.Priority)
                                .Select(reference => TryAddReference(project, reference)).Where(added => added != null));
            }

            UpdateSettings(model, true);
            return(output);
        }
Ejemplo n.º 3
0
        public void UpdateSettings(IAddRemoveReferencesModel model, bool recent = false)
        {
            if (model?.Settings is null || model.References is null)
            {
                return;
            }

            if (recent)
            {
                model.Settings.UpdateRecentReferencesForHost(model.HostApplication,
                                                             model.References.Where(reference => reference.IsReferenced && !reference.IsBuiltIn)
                                                             .Select(reference => reference.ToReferenceInfo()).ToList());
            }

            model.Settings.UpdatePinnedReferencesForHost(model.HostApplication,
                                                         model.References.Where(reference => reference.IsPinned).Select(reference => reference.ToReferenceInfo())
                                                         .ToList());

            _settings.Save(model.Settings);
        }