/// <summary>
        /// Called by the ReferenceManagerDialog to apply the user selection of references.
        /// </summary>
        public void ChangeReferences(uint operation, IVsReferenceProviderContext changedContext)
        {
            var referenceOperation = (__VSREFERENCECHANGEOPERATION)operation;

            // The items selected in Solution Explorer should correspond to exactly one
            // IVsHierarchy, otherwise we shouldn't have even tried to show the dialog.
            Debug.Assert(_tracker.SelectedHierarchy != null);
            if (_tracker.SelectedHierarchy.TryGetProject(out var project))
            {
                if (project.Object is VSProject3 vsproject)
                {
                    foreach (IVsReference reference in changedContext.References)
                    {
                        var path = reference.FullPath;

                        switch (referenceOperation)
                        {
                        case __VSREFERENCECHANGEOPERATION.VSREFERENCECHANGEOPERATION_ADD:
                            vsproject.AnalyzerReferences.Add(path);
                            break;

                        case __VSREFERENCECHANGEOPERATION.VSREFERENCECHANGEOPERATION_REMOVE:
                            vsproject.AnalyzerReferences.Remove(path);
                            break;

                        default:
                            break;
                        }
                    }
                }
            }
        }
        /// <summary>
        /// Called by the ReferenceManagerDialog to apply the user selection of references.
        /// </summary>
        public void ChangeReferences(uint operation, IVsReferenceProviderContext changedContext)
        {
            var referenceOperation = (__VSREFERENCECHANGEOPERATION)operation;

            // The items selected in Solution Explorer should correspond to exactly one
            // IVsHierarchy, otherwise we shouldn't have even tried to show the dialog.
            Debug.Assert(_tracker.SelectedHierarchy != null);

            EnvDTE.Project project = null;
            if (_tracker.SelectedHierarchy.TryGetProject(out project))
            {
                var vsproject = project.Object as VSProject3;

                if (vsproject != null)
                {
                    foreach (IVsReference reference in changedContext.References)
                    {
                        var path = reference.FullPath;

                        switch (referenceOperation)
                        {
                            case __VSREFERENCECHANGEOPERATION.VSREFERENCECHANGEOPERATION_ADD:
                                vsproject.AnalyzerReferences.Add(path);
                                break;
                            case __VSREFERENCECHANGEOPERATION.VSREFERENCECHANGEOPERATION_REMOVE:
                                vsproject.AnalyzerReferences.Remove(path);
                                break;
                            default:
                                break;
                        }
                    }
                }
            }
        }
Exemple #3
0
        public void ChangeReferences(uint operation, IVsReferenceProviderContext changedContext)
        {
            var op = (__VSREFERENCECHANGEOPERATION)operation;
            __VSREFERENCECHANGEOPERATIONRESULT result;

            try
            {
                if (op == __VSREFERENCECHANGEOPERATION.VSREFERENCECHANGEOPERATION_ADD)
                {
                    result = this.AddReferences(changedContext);
                }
                else
                {
                    result = this.RemoveReferences(changedContext);
                }
            }
            catch (InvalidOperationException e)
            {
                System.Diagnostics.Debug.Fail(e.ToString());
                result = __VSREFERENCECHANGEOPERATIONRESULT.VSREFERENCECHANGEOPERATIONRESULT_DENY;
            }

            if (result == __VSREFERENCECHANGEOPERATIONRESULT.VSREFERENCECHANGEOPERATIONRESULT_DENY)
            {
                throw new InvalidOperationException();
            }
        }
        public async Task ChangeReferencesAsync(uint operation, object changedContext)
        {
            await JoinableTaskFactory.SwitchToMainThreadAsync();

            __VSREFERENCECHANGEOPERATION changeOperation = (__VSREFERENCECHANGEOPERATION)operation;
            IVsReferenceProviderContext  context         = (IVsReferenceProviderContext)changedContext;

            throw new NotImplementedException();
        }
Exemple #5
0
        private __VSREFERENCECHANGEOPERATIONRESULT RemoveReferences(IVsReferenceProviderContext context)
        {
            var removedReferences = this.GetRemovedReferences(context);

            foreach (var refNode in removedReferences)
            {
                refNode.Remove(true /* delete from storage*/);
            }

            return(__VSREFERENCECHANGEOPERATIONRESULT.VSREFERENCECHANGEOPERATIONRESULT_ALLOW);
        }
Exemple #6
0
        private __VSREFERENCECHANGEOPERATIONRESULT AddReferences(IVsReferenceProviderContext context)
        {
            var addedReferences = this.GetAddedReferences(context);

            var referenceContainer = this.GetReferenceContainer();

            foreach (var selectorData in addedReferences)
            {
                referenceContainer.AddReferenceFromSelectorData(selectorData);
            }

            return(__VSREFERENCECHANGEOPERATIONRESULT.VSREFERENCECHANGEOPERATIONRESULT_ALLOW);
        }
Exemple #7
0
        protected virtual IEnumerable <ReferenceNode> GetRemovedReferences(IVsReferenceProviderContext context)
        {
            var removedReferences = Enumerable.Empty <ReferenceNode>();

            if (context.ProviderGuid == VSConstants.AssemblyReferenceProvider_Guid)
            {
                removedReferences = GetRemovedReferences(context as IVsAssemblyReferenceProviderContext);
            }
            else if (context.ProviderGuid == VSConstants.ProjectReferenceProvider_Guid)
            {
                removedReferences = GetRemovedReferences(context as IVsProjectReferenceProviderContext);
            }
            else if (context.ProviderGuid == VSConstants.FileReferenceProvider_Guid)
            {
                removedReferences = GetRemovedReferences(context as IVsFileReferenceProviderContext);
            }

            return(removedReferences);
        }
Exemple #8
0
        protected virtual IEnumerable <VSCOMPONENTSELECTORDATA> GetAddedReferences(IVsReferenceProviderContext context)
        {
            var addedReferences = Enumerable.Empty <VSCOMPONENTSELECTORDATA>();

            if (context.ProviderGuid == VSConstants.AssemblyReferenceProvider_Guid)
            {
                addedReferences = GetAddedReferences(context as IVsAssemblyReferenceProviderContext);
            }
            else if (context.ProviderGuid == VSConstants.ProjectReferenceProvider_Guid)
            {
                addedReferences = GetAddedReferences(context as IVsProjectReferenceProviderContext);
            }
            else if (context.ProviderGuid == VSConstants.FileReferenceProvider_Guid)
            {
                addedReferences = GetAddedReferences(context as IVsFileReferenceProviderContext);
            }

            return(addedReferences);
        }