/// <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; } } } } }
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(); }
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); }
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); }
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); }
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); }