there is no fully automatic way to do that. There is, however, a feature that may help: invoke 'Find Module Usages' from context menu on each of the project references in question. If no usages found, the reference can be safely removed. This also works for references to assemblies.
I tried this and it does work. However: - Performance is slow. It may be faster to delete the reference and check the build log for errors. - There seems to be some kind of memory issue. During the first search, virtual memory usage rose steadily to about 1.1GB. Subsequent searches stayed about the same level and performance continued to degrade to a point where the command was unusable.
there is no fully automatic way to do that. There is, however, a feature that may help: invoke 'Find Module Usages' from context menu on each of the project references in question. If no usages found, the reference can be safely removed. This also works for references to assemblies.
you're probably right about the performance. Basically, this feature needs to resolve every identifier in each file in the project, so this can't be fast. The motivation for this feature was to provide an understanding how a particular reference is used in the project which is more functionality than is required for just giving an answer to the question if it is used at all.
Concerning the possible memory leak, it's interesting. Do I understand correctly that the huge amount of memory allocated did not go away in that working session of VS? Thanks.
I tried this and it does work. However: - Performance is slow. It may be faster to delete the reference and check the build log for errors. - There seems to be some kind of memory issue. During the first search, virtual memory usage rose steadily to about 1.1GB. Subsequent searches stayed about the same level and performance continued to degrade to a point where the command was unusable. Jeff
>> Hello Jeff, >> >> there is no fully automatic way to do that. There is, however, a >> feature >> that may help: >> invoke 'Find Module Usages' from context menu on each of the project >> references in question. If no >> usages found, the reference can be safely removed. This also works >> for >> references to assemblies. >> Regards, >> Dmitry Shaporenkov >> JetBrains, Inc >> http://www.jetbrains.com >> "Develop with pleasure!" >>> Is there a way to clean up project references which are no longer >>> needed? >>>
Yes, the memory seemed to stay with that session and did not get released. I ran several other applications to see if the working set would get trimmed but it did not change. I have attached the Performance Graph from process explorer showing the results of the three searches I did. You can see how memory usage increased during the first search and then stayed at the level on subsequent searches.
you're probably right about the performance. Basically, this feature needs to resolve every identifier in each file in the project, so this can't be fast. The motivation for this feature was to provide an understanding how a particular reference is used in the project which is more functionality than is required for just giving an answer to the question if it is used at all.
>
Concerning the possible memory leak, it's interesting. Do I understand correctly that the huge amount of memory allocated did not go away in that working session of VS? Thanks.
> >> Hi Dmitry, >> >> I tried this and it does work. >> However: >> - Performance is slow. It may be faster to delete the reference and >> check >> the build log for errors. >> - There seems to be some kind of memory issue. During the first >> search, >> virtual memory usage rose steadily to about 1.1GB. Subsequent searches >> stayed about the same level and performance continued to degrade to a >> point >> where the command was unusable. >> Jeff >> >> "Dmitry Shaporenkov (JetBrains)" <dsha@jetbrains.com> wrote in message >> news:c8a894d91b6e528c8abe29cef51d4@news.intellij.net... >> >>> Hello Jeff, >>> >>> there is no fully automatic way to do that. There is, however, a >>> feature >>> that may help: >>> invoke 'Find Module Usages' from context menu on each of the project >>> references in question. If no >>> usages found, the reference can be safely removed. This also works >>> for >>> references to assemblies. >>> Regards, >>> Dmitry Shaporenkov >>> JetBrains, Inc >>> http://www.jetbrains.com >>> "Develop with pleasure!" >>>> Is there a way to clean up project references which are no longer >>>> needed? >>>> >
I have an idea that not releasing memory might be caused by holding some find results opened. What I think of is that the Find Module Usages feature shows its results in the Find Results window, and probably if you have results of previous searches still opened in a tab in this window, the memory might not be released. I'll try to verify this hypothesis, and if you have a chance to check it, I'll be glad to hear of your experience.
Yes, the memory seemed to stay with that session and did not get released. I ran several other applications to see if the working set would get trimmed but it did not change. I have attached the Performance Graph from process explorer showing the results of the three searches I did. You can see how memory usage increased during the first search and then stayed at the level on subsequent searches. "Dmitry Shaporenkov (JetBrains)" <dsha@jetbrains.com> wrote in message news:c8a894d91b6e688c8ac5faf123166@news.intellij.net...
>> Hello Jeff, >> >> you're probably right about the performance. Basically, this feature >> needs >> to resolve every identifier in each file in the project, >> so this can't be fast. The motivation for this feature was to provide >> an >> understanding how a particular reference is used in the project >> which is more functionality than is required for just giving an >> answer to >> the question if it is used at all. >> Concerning the possible memory leak, it's interesting. Do I >> understand >> correctly >> that the huge amount of memory allocated did not >> go away in that working session of VS? Thanks. >> Regards, >> Dmitry Shaporenkov >> JetBrains, Inc >> http://www.jetbrains.com >> "Develop with pleasure!" >>> Hi Dmitry, >>> >>> I tried this and it does work. >>> However: >>> - Performance is slow. It may be faster to delete the reference and >>> check >>> the build log for errors. >>> - There seems to be some kind of memory issue. During the first >>> search, >>> virtual memory usage rose steadily to about 1.1GB. Subsequent >>> searches >>> stayed about the same level and performance continued to degrade to >>> a >>> point >>> where the command was unusable. >>> Jeff >>> "Dmitry Shaporenkov (JetBrains)" <dsha@jetbrains.com> wrote in >>> message news:c8a894d91b6e528c8abe29cef51d4@news.intellij.net... >>> >>>> Hello Jeff, >>>> >>>> there is no fully automatic way to do that. There is, however, a >>>> feature >>>> that may help: >>>> invoke 'Find Module Usages' from context menu on each of the >>>> project >>>> references in question. If no >>>> usages found, the reference can be safely removed. This also works >>>> for >>>> references to assemblies. >>>> Regards, >>>> Dmitry Shaporenkov >>>> JetBrains, Inc >>>> http://www.jetbrains.com >>>> "Develop with pleasure!" >>>>> Is there a way to clean up project references which are no longer >>>>> needed? >>>>>
Hi Dmitry, I tried closing the search window but it had no effect on memory usage. When I tried a second search, I got an out of memory exception which I submitted via JIRA. Jeff
JetBrains.ReSharper.Util.InternalErrorException: Exception of type 'System.OutOfMemoryException' was thrown. An exception has occurred ---> System.OutOfMemoryException: Exception of type 'System.OutOfMemoryException' was thrown. at System.Collections.Hashtable.rehash(Int32 newsize) at System.Collections.Hashtable.Insert(Object key, Object nvalue, Boolean add) at System.Collections.Hashtable.set_Item(Object key, Object value) at JetBrains.ReSharper.Util.WeakHashtable.set_Item(Object key, Object value) in c:\Agent\work\ReSharper2.0\src\Util\src\dataStructures\WeakHashtable.cs:line 60 at JetBrains.ReSharper.Psi.Impl.Resolve.ResolveCache.CacheBySourceResult(IRef reference, ResolveResult value, CachedPsiFile psiFile) in c:\Agent\work\ReSharper2.0\src\Psi\src\impl\resolve\ResolveCache.cs:line 120 at JetBrains.ReSharper.Psi.Impl.Resolve.ResolveCache.set_Item(IRef reference, ResolveResult value) in c:\Agent\work\ReSharper2.0\src\Psi\src\impl\resolve\ResolveCache.cs:line 84 at JetBrains.ReSharper.Psi.Impl.Resolve.ResolveUtil.ResolveWithCache(IInternalRef reference) in c:\Agent\work\ReSharper2.0\src\Psi\src\impl\resolve\ResolveUtil.cs:line 613 at JetBrains.ReSharper.Psi.CSharp.Impl.Tree.ReferenceExpressionBase.Resolve() in c:\Agent\work\ReSharper2.0\src\Psi\src\cSharp\impl\tree\ReferenceExpressionBase.cs:line 212 at JetBrains.ReSharper.CodeInsight.FindUsages.FindModuleReferenceUsagesAction.MyRecursiveElementProcessor.ProcessAfterInterior(IElement element) in c:\Agent\work\ReSharper2.0\src\CodeInsight\src\FindUsages\FindModuleReferenceUsagesAction.cs:line 266 at JetBrains.ReSharper.Psi.ExtensionsAPI.Tree.TreeElement.ProcessDescendants(IRecursiveElementProcessor processor) in c:\Agent\work\ReSharper2.0\src\Psi\src\ExtensionsAPI\Tree\TreeElement.cs:line 76 at JetBrains.ReSharper.Psi.ExtensionsAPI.Tree.TreeElement.ProcessDescendants(IRecursiveElementProcessor processor) in c:\Agent\work\ReSharper2.0\src\Psi\src\ExtensionsAPI\Tree\TreeElement.cs:line 75 at JetBrains.ReSharper.Psi.ExtensionsAPI.Tree.TreeElement.ProcessDescendants(IRecursiveElementProcessor processor) in c:\Agent\work\ReSharper2.0\src\Psi\src\ExtensionsAPI\Tree\TreeElement.cs:line 75 at JetBrains.ReSharper.Psi.ExtensionsAPI.Tree.TreeElement.ProcessDescendants(IRecursiveElementProcessor processor) in c:\Agent\work\ReSharper2.0\src\Psi\src\ExtensionsAPI\Tree\TreeElement.cs:line 75 at JetBrains.ReSharper.Psi.ExtensionsAPI.Tree.TreeElement.ProcessDescendants(IRecursiveElementProcessor processor) in c:\Agent\work\ReSharper2.0\src\Psi\src\ExtensionsAPI\Tree\TreeElement.cs:line 75 at JetBrains.ReSharper.Psi.ExtensionsAPI.Tree.TreeElement.ProcessDescendants(IRecursiveElementProcessor processor) in c:\Agent\work\ReSharper2.0\src\Psi\src\ExtensionsAPI\Tree\TreeElement.cs:line 75 at JetBrains.ReSharper.Psi.ExtensionsAPI.Tree.TreeElement.ProcessDescendants(IRecursiveElementProcessor processor) in c:\Agent\work\ReSharper2.0\src\Psi\src\ExtensionsAPI\Tree\TreeElement.cs:line 75 at JetBrains.ReSharper.Psi.ExtensionsAPI.Tree.TreeElement.ProcessDescendants(IRecursiveElementProcessor processor) in c:\Agent\work\ReSharper2.0\src\Psi\src\ExtensionsAPI\Tree\TreeElement.cs:line 75 at JetBrains.ReSharper.Psi.ExtensionsAPI.Tree.TreeElement.ProcessDescendants(IRecursiveElementProcessor processor) in c:\Agent\work\ReSharper2.0\src\Psi\src\ExtensionsAPI\Tree\TreeElement.cs:line 75 at JetBrains.ReSharper.CodeInsight.FindUsages.FindModuleReferenceUsagesAction.MyProjectVisitor.VisitProjectFile(IProjectFile projectFile) in c:\Agent\work\ReSharper2.0\src\CodeInsight\src\FindUsages\FindModuleReferenceUsagesAction.cs:line 345 at JetBrains.ReSharper.ProjectModel.Impl.ProjectFileImpl.Accept(ProjectVisitor projectVisitor) in c:\Agent\work\ReSharper2.0\src\ProjectModel\src\impl\ProjectFileImpl.cs:line 128 at JetBrains.ReSharper.ProjectModel.RecursiveProjectVisitor.VisitProjectItem(IProjectItem projectItem) in c:\Agent\work\ReSharper2.0\src\ProjectModel\src\ProjectVisitor.cs:line 77 at JetBrains.ReSharper.ProjectModel.ProjectVisitor.VisitProjectFolder(IProjectFolder projectFolder) in c:\Agent\work\ReSharper2.0\src\ProjectModel\src\ProjectVisitor.cs:line 26 at JetBrains.ReSharper.ProjectModel.Impl.ProjectFolderImpl.Accept(ProjectVisitor projectVisitor) in c:\Agent\work\ReSharper2.0\src\ProjectModel\src\impl\ProjectFolderImpl.cs:line 337 at JetBrains.ReSharper.ProjectModel.RecursiveProjectVisitor.VisitProjectItem(IProjectItem projectItem) in c:\Agent\work\ReSharper2.0\src\ProjectModel\src\ProjectVisitor.cs:line 77 at JetBrains.ReSharper.ProjectModel.RecursiveProjectVisitor.VisitProject(IProject project) in c:\Agent\work\ReSharper2.0\src\ProjectModel\src\ProjectVisitor.cs:line 82 at JetBrains.ReSharper.ProjectModel.Impl.ProjectImpl.Accept(ProjectVisitor projectVisitor) in c:\Agent\work\ReSharper2.0\src\ProjectModel\src\impl\ProjectImpl.cs:line 170 at JetBrains.ReSharper.CodeInsight.FindUsages.FindModuleReferenceUsagesAction.MyTaskHelper.Run(IProgressIndicator progressIndicator) in c:\Agent\work\ReSharper2.0\src\CodeInsight\src\FindUsages\FindModuleReferenceUsagesAction.cs:line 373 at JetBrains.ReSharper.Shell.Progress.ProgressWindow.AsyncTaskHelper.ThreadFunc() in c:\Agent\work\ReSharper2.0\src\Shell\src\Progress\ProgressWindow.cs:line 479 --- End of inner exception stack trace ---
at JetBrains.ReSharper.Util.Logger.LogExceptionEx(Exception, String, Boolean) in c:\Agent\work\ReSharper2.0\src\Util\src\Logger.cs:line 327 column 9 at JetBrains.ReSharper.Util.Logger.LogException(Exception) in c:\Agent\work\ReSharper2.0\src\Util\src\Logger.cs:line 339 column 5 at JetBrains.ReSharper.Shell.Progress.AsyncTaskHelper.ThreadFunc() in c:\Agent\work\ReSharper2.0\src\Shell\src\Progress\ProgressWindow.cs:line 487 column 11 at System.Threading.ThreadHelper.ThreadStart_Context(Object) at System.Threading.ExecutionContext.Run(ExecutionContext, ContextCallback, Object) at System.Threading.ThreadHelper.ThreadStart()
I have an idea that not releasing memory might be caused by holding some find results opened. What I think of is that the Find Module Usages feature shows its results in the Find Results window, and probably if you have results of previous searches still opened in a tab in this window, the memory might not be released. I'll try to verify this hypothesis, and if you have a chance to check it, I'll be glad to hear of your experience.
> >> Yes, the memory seemed to stay with that session and did not get >> released. I >> ran several other applications to see if the working set would get >> trimmed >> but it did not change. >> I have attached the Performance Graph from process explorer showing >> the >> results of the three searches I did. You can see how memory usage >> increased >> during the first search and then stayed at the level on subsequent >> searches. >> "Dmitry Shaporenkov (JetBrains)" <dsha@jetbrains.com> wrote in message >> news:c8a894d91b6e688c8ac5faf123166@news.intellij.net... >> >>> Hello Jeff, >>> >>> you're probably right about the performance. Basically, this feature >>> needs >>> to resolve every identifier in each file in the project, >>> so this can't be fast. The motivation for this feature was to provide >>> an >>> understanding how a particular reference is used in the project >>> which is more functionality than is required for just giving an >>> answer to >>> the question if it is used at all. >>> Concerning the possible memory leak, it's interesting. Do I >>> understand >>> correctly >>> that the huge amount of memory allocated did not >>> go away in that working session of VS? Thanks. >>> Regards, >>> Dmitry Shaporenkov >>> JetBrains, Inc >>> http://www.jetbrains.com >>> "Develop with pleasure!" >>>> Hi Dmitry, >>>> >>>> I tried this and it does work. >>>> However: >>>> - Performance is slow. It may be faster to delete the reference and >>>> check >>>> the build log for errors. >>>> - There seems to be some kind of memory issue. During the first >>>> search, >>>> virtual memory usage rose steadily to about 1.1GB. Subsequent >>>> searches >>>> stayed about the same level and performance continued to degrade to >>>> a >>>> point >>>> where the command was unusable. >>>> Jeff >>>> "Dmitry Shaporenkov (JetBrains)" <dsha@jetbrains.com> wrote in >>>> message news:c8a894d91b6e528c8abe29cef51d4@news.intellij.net... >>>> >>>>> Hello Jeff, >>>>> >>>>> there is no fully automatic way to do that. There is, however, a >>>>> feature >>>>> that may help: >>>>> invoke 'Find Module Usages' from context menu on each of the >>>>> project >>>>> references in question. If no >>>>> usages found, the reference can be safely removed. This also works >>>>> for >>>>> references to assemblies. >>>>> Regards, >>>>> Dmitry Shaporenkov >>>>> JetBrains, Inc >>>>> http://www.jetbrains.com >>>>> "Develop with pleasure!" >>>>>> Is there a way to clean up project references which are no longer >>>>>> needed? >>>>>> >
Hi Dmitry, I tried closing the search window but it had no effect on memory usage. When I tried a second search, I got an out of memory exception which I submitted via JIRA. Jeff JetBrains.ReSharper.Util.InternalErrorException: Exception of type 'System.OutOfMemoryException' was thrown. An exception has occurred ---> System.OutOfMemoryException: Exception of type 'System.OutOfMemoryException' was thrown. at System.Collections.Hashtable.rehash(Int32 newsize) at System.Collections.Hashtable.Insert(Object key, Object nvalue, Boolean add) at System.Collections.Hashtable.set_Item(Object key, Object value) at JetBrains.ReSharper.Util.WeakHashtable.set_Item(Object key, Object value) in c:\Agent\work\ReSharper2.0\src\Util\src\dataStructures\WeakHashtable.c s:line 60 at JetBrains.ReSharper.Psi.Impl.Resolve.ResolveCache.CacheBySourceResult( IRef reference, ResolveResult value, CachedPsiFile psiFile) in c:\Agent\work\ReSharper2.0\src\Psi\src\impl\resolve\ResolveCache.cs:li ne 120 at JetBrains.ReSharper.Psi.Impl.Resolve.ResolveCache.set_Item(IRef reference, ResolveResult value) in c:\Agent\work\ReSharper2.0\src\Psi\src\impl\resolve\ResolveCache.cs:li ne 84 at JetBrains.ReSharper.Psi.Impl.Resolve.ResolveUtil.ResolveWithCache(IInt ernalRef reference) in c:\Agent\work\ReSharper2.0\src\Psi\src\impl\resolve\ResolveUtil.cs:lin e 613 at JetBrains.ReSharper.Psi.CSharp.Impl.Tree.ReferenceExpressionBase.Resol ve() in c:\Agent\work\ReSharper2.0\src\Psi\src\cSharp\impl\tree\ReferenceExpre ssionBase.cs:line 212 at JetBrains.ReSharper.CodeInsight.FindUsages.FindModuleReferenceUsagesAc tion.MyRecursiveElementProcessor.ProcessAfterInterior(IElement element) in c:\Agent\work\ReSharper2.0\src\CodeInsight\src\FindUsages\FindModuleRe ferenceUsagesAction.cs:line 266 at JetBrains.ReSharper.Psi.ExtensionsAPI.Tree.TreeElement.ProcessDescenda nts(IRecursiveElementProcessor processor) in c:\Agent\work\ReSharper2.0\src\Psi\src\ExtensionsAPI\Tree\TreeElement. cs:line 76 at JetBrains.ReSharper.Psi.ExtensionsAPI.Tree.TreeElement.ProcessDescenda nts(IRecursiveElementProcessor processor) in c:\Agent\work\ReSharper2.0\src\Psi\src\ExtensionsAPI\Tree\TreeElement. cs:line 75 at JetBrains.ReSharper.Psi.ExtensionsAPI.Tree.TreeElement.ProcessDescenda nts(IRecursiveElementProcessor processor) in c:\Agent\work\ReSharper2.0\src\Psi\src\ExtensionsAPI\Tree\TreeElement. cs:line 75 at JetBrains.ReSharper.Psi.ExtensionsAPI.Tree.TreeElement.ProcessDescenda nts(IRecursiveElementProcessor processor) in c:\Agent\work\ReSharper2.0\src\Psi\src\ExtensionsAPI\Tree\TreeElement. cs:line 75 at JetBrains.ReSharper.Psi.ExtensionsAPI.Tree.TreeElement.ProcessDescenda nts(IRecursiveElementProcessor processor) in c:\Agent\work\ReSharper2.0\src\Psi\src\ExtensionsAPI\Tree\TreeElement. cs:line 75 at JetBrains.ReSharper.Psi.ExtensionsAPI.Tree.TreeElement.ProcessDescenda nts(IRecursiveElementProcessor processor) in c:\Agent\work\ReSharper2.0\src\Psi\src\ExtensionsAPI\Tree\TreeElement. cs:line 75 at JetBrains.ReSharper.Psi.ExtensionsAPI.Tree.TreeElement.ProcessDescenda nts(IRecursiveElementProcessor processor) in c:\Agent\work\ReSharper2.0\src\Psi\src\ExtensionsAPI\Tree\TreeElement. cs:line 75 at JetBrains.ReSharper.Psi.ExtensionsAPI.Tree.TreeElement.ProcessDescenda nts(IRecursiveElementProcessor processor) in c:\Agent\work\ReSharper2.0\src\Psi\src\ExtensionsAPI\Tree\TreeElement. cs:line 75 at JetBrains.ReSharper.Psi.ExtensionsAPI.Tree.TreeElement.ProcessDescenda nts(IRecursiveElementProcessor processor) in c:\Agent\work\ReSharper2.0\src\Psi\src\ExtensionsAPI\Tree\TreeElement. cs:line 75 at JetBrains.ReSharper.CodeInsight.FindUsages.FindModuleReferenceUsagesAc tion.MyProjectVisitor.VisitProjectFile(IProjectFile projectFile) in c:\Agent\work\ReSharper2.0\src\CodeInsight\src\FindUsages\FindModuleRe ferenceUsagesAction.cs:line 345 at JetBrains.ReSharper.ProjectModel.Impl.ProjectFileImpl.Accept(ProjectVi sitor projectVisitor) in c:\Agent\work\ReSharper2.0\src\ProjectModel\src\impl\ProjectFileImpl.c s:line 128 at JetBrains.ReSharper.ProjectModel.RecursiveProjectVisitor.VisitProjectI tem(IProjectItem projectItem) in c:\Agent\work\ReSharper2.0\src\ProjectModel\src\ProjectVisitor.cs:line 77 at JetBrains.ReSharper.ProjectModel.ProjectVisitor.VisitProjectFolder(IPr ojectFolder projectFolder) in c:\Agent\work\ReSharper2.0\src\ProjectModel\src\ProjectVisitor.cs:line 26 at JetBrains.ReSharper.ProjectModel.Impl.ProjectFolderImpl.Accept(Project Visitor projectVisitor) in c:\Agent\work\ReSharper2.0\src\ProjectModel\src\impl\ProjectFolderImpl .cs:line 337 at JetBrains.ReSharper.ProjectModel.RecursiveProjectVisitor.VisitProjectI tem(IProjectItem projectItem) in c:\Agent\work\ReSharper2.0\src\ProjectModel\src\ProjectVisitor.cs:line 77 at JetBrains.ReSharper.ProjectModel.RecursiveProjectVisitor.VisitProject( IProject project) in c:\Agent\work\ReSharper2.0\src\ProjectModel\src\ProjectVisitor.cs:line 82 at JetBrains.ReSharper.ProjectModel.Impl.ProjectImpl.Accept(ProjectVisito r projectVisitor) in c:\Agent\work\ReSharper2.0\src\ProjectModel\src\impl\ProjectImpl.cs:li ne 170 at JetBrains.ReSharper.CodeInsight.FindUsages.FindModuleReferenceUsagesAc tion.MyTaskHelper.Run(IProgressIndicator progressIndicator) in c:\Agent\work\ReSharper2.0\src\CodeInsight\src\FindUsages\FindModuleRe ferenceUsagesAction.cs:line 373 at JetBrains.ReSharper.Shell.Progress.ProgressWindow.AsyncTaskHelper.Thre adFunc() in c:\Agent\work\ReSharper2.0\src\Shell\src\Progress\ProgressWindow.cs:li ne 479 --- End of inner exception stack trace --- at JetBrains.ReSharper.Util.Logger.LogExceptionEx(Exception, String, Boolean) in c:\Agent\work\ReSharper2.0\src\Util\src\Logger.cs:line 327 column 9 at JetBrains.ReSharper.Util.Logger.LogException(Exception) in c:\Agent\work\ReSharper2.0\src\Util\src\Logger.cs:line 339 column 5 at JetBrains.ReSharper.Shell.Progress.AsyncTaskHelper.ThreadFunc() in c:\Agent\work\ReSharper2.0\src\Shell\src\Progress\ProgressWindow.cs:li ne 487 column 11 at System.Threading.ThreadHelper.ThreadStart_Context(Object) at System.Threading.ExecutionContext.Run(ExecutionContext, ContextCallback, Object) at System.Threading.ThreadHelper.ThreadStart() "Dmitry Shaporenkov (JetBrains)" <dsha@jetbrains.com> wrote in message news:c8a894d91b6ea78c8acae94eadafd@news.intellij.net...
>> Hello Jeff, >> >> I have an idea that not releasing memory might be caused by holding >> some >> find results opened. >> What I think of is that the Find Module Usages feature shows its >> results >> in the Find Results window, >> and probably if you have results of previous searches still opened in >> a >> tab in this window, the memory might not be released. >> I'll try to verify this hypothesis, and if you have a chance to check >> it, >> I'll be glad to hear of your experience. >> Regards, >> Dmitry Shaporenkov >> JetBrains, Inc >> http://www.jetbrains.com >> "Develop with pleasure!" >>> Yes, the memory seemed to stay with that session and did not get >>> released. I >>> ran several other applications to see if the working set would get >>> trimmed >>> but it did not change. >>> I have attached the Performance Graph from process explorer showing >>> the >>> results of the three searches I did. You can see how memory usage >>> increased >>> during the first search and then stayed at the level on subsequent >>> searches. >>> "Dmitry Shaporenkov (JetBrains)" <dsha@jetbrains.com> wrote in >>> message >>> news:c8a894d91b6e688c8ac5faf123166@news.intellij.net... >>>> Hello Jeff, >>>> >>>> you're probably right about the performance. Basically, this >>>> feature >>>> needs >>>> to resolve every identifier in each file in the project, >>>> so this can't be fast. The motivation for this feature was to >>>> provide >>>> an >>>> understanding how a particular reference is used in the project >>>> which is more functionality than is required for just giving an >>>> answer to >>>> the question if it is used at all. >>>> Concerning the possible memory leak, it's interesting. Do I >>>> understand >>>> correctly >>>> that the huge amount of memory allocated did not >>>> go away in that working session of VS? Thanks. >>>> Regards, >>>> Dmitry Shaporenkov >>>> JetBrains, Inc >>>> http://www.jetbrains.com >>>> "Develop with pleasure!" >>>>> Hi Dmitry, >>>>> >>>>> I tried this and it does work. >>>>> However: >>>>> - Performance is slow. It may be faster to delete the reference >>>>> and >>>>> check >>>>> the build log for errors. >>>>> - There seems to be some kind of memory issue. During the first >>>>> search, >>>>> virtual memory usage rose steadily to about 1.1GB. Subsequent >>>>> searches >>>>> stayed about the same level and performance continued to degrade >>>>> to >>>>> a >>>>> point >>>>> where the command was unusable. >>>>> Jeff >>>>> "Dmitry Shaporenkov (JetBrains)" <dsha@jetbrains.com> wrote in >>>>> message news:c8a894d91b6e528c8abe29cef51d4@news.intellij.net... >>>>>> Hello Jeff, >>>>>> >>>>>> there is no fully automatic way to do that. There is, however, a >>>>>> feature >>>>>> that may help: >>>>>> invoke 'Find Module Usages' from context menu on each of the >>>>>> project >>>>>> references in question. If no >>>>>> usages found, the reference can be safely removed. This also >>>>>> works >>>>>> for >>>>>> references to assemblies. >>>>>> Regards, >>>>>> Dmitry Shaporenkov >>>>>> JetBrains, Inc >>>>>> http://www.jetbrains.com >>>>>> "Develop with pleasure!" >>>>>>> Is there a way to clean up project references which are no >>>>>>> longer needed? >>>>>>>
> >> Hi Dmitry, >> I tried closing the search window but it had no effect on memory >> usage. >> When I tried a second search, I got an out of memory exception which I >> submitted via JIRA. >> Jeff >> JetBrains.ReSharper.Util.InternalErrorException: Exception of type >> 'System.OutOfMemoryException' was thrown. >> An exception has occurred ---> System.OutOfMemoryException: Exception >> of >> type 'System.OutOfMemoryException' was thrown. >> at System.Collections.Hashtable.rehash(Int32 newsize) >> at System.Collections.Hashtable.Insert(Object key, Object nvalue, >> Boolean >> add) >> at System.Collections.Hashtable.set_Item(Object key, Object value) >> at JetBrains.ReSharper.Util.WeakHashtable.set_Item(Object key, >> Object >> value) in >> c:\Agent\work\ReSharper2.0\src\Util\src\dataStructures\WeakHashtable.c >> s:line >> 60 >> at >> JetBrains.ReSharper.Psi.Impl.Resolve.ResolveCache.CacheBySourceResult( >> IRef >> reference, ResolveResult value, CachedPsiFile psiFile) in >> c:\Agent\work\ReSharper2.0\src\Psi\src\impl\resolve\ResolveCache.cs:li >> ne 120 >> at JetBrains.ReSharper.Psi.Impl.Resolve.ResolveCache.set_Item(IRef >> reference, ResolveResult value) in >> c:\Agent\work\ReSharper2.0\src\Psi\src\impl\resolve\ResolveCache.cs:li >> ne 84 >> at >> JetBrains.ReSharper.Psi.Impl.Resolve.ResolveUtil.ResolveWithCache(IInt >> ernalRef >> reference) in >> c:\Agent\work\ReSharper2.0\src\Psi\src\impl\resolve\ResolveUtil.cs:lin >> e 613 >> at >> JetBrains.ReSharper.Psi.CSharp.Impl.Tree.ReferenceExpressionBase.Resol >> ve() >> in >> c:\Agent\work\ReSharper2.0\src\Psi\src\cSharp\impl\tree\ReferenceExpre >> ssionBase.cs:line >> 212 >> at >> JetBrains.ReSharper.CodeInsight.FindUsages.FindModuleReferenceUsagesAc >> tion.MyRecursiveElementProcessor.ProcessAfterInterior(IElement >> element) in >> c:\Agent\work\ReSharper2.0\src\CodeInsight\src\FindUsages\FindModuleRe >> ferenceUsagesAction.cs:line >> 266 >> at >> JetBrains.ReSharper.Psi.ExtensionsAPI.Tree.TreeElement.ProcessDescenda >> nts(IRecursiveElementProcessor >> processor) in >> c:\Agent\work\ReSharper2.0\src\Psi\src\ExtensionsAPI\Tree\TreeElement. >> cs:line >> 76 >> at >> JetBrains.ReSharper.Psi.ExtensionsAPI.Tree.TreeElement.ProcessDescenda >> nts(IRecursiveElementProcessor >> processor) in >> c:\Agent\work\ReSharper2.0\src\Psi\src\ExtensionsAPI\Tree\TreeElement. >> cs:line >> 75 >> at >> JetBrains.ReSharper.Psi.ExtensionsAPI.Tree.TreeElement.ProcessDescenda >> nts(IRecursiveElementProcessor >> processor) in >> c:\Agent\work\ReSharper2.0\src\Psi\src\ExtensionsAPI\Tree\TreeElement. >> cs:line >> 75 >> at >> JetBrains.ReSharper.Psi.ExtensionsAPI.Tree.TreeElement.ProcessDescenda >> nts(IRecursiveElementProcessor >> processor) in >> c:\Agent\work\ReSharper2.0\src\Psi\src\ExtensionsAPI\Tree\TreeElement. >> cs:line >> 75 >> at >> JetBrains.ReSharper.Psi.ExtensionsAPI.Tree.TreeElement.ProcessDescenda >> nts(IRecursiveElementProcessor >> processor) in >> c:\Agent\work\ReSharper2.0\src\Psi\src\ExtensionsAPI\Tree\TreeElement. >> cs:line >> 75 >> at >> JetBrains.ReSharper.Psi.ExtensionsAPI.Tree.TreeElement.ProcessDescenda >> nts(IRecursiveElementProcessor >> processor) in >> c:\Agent\work\ReSharper2.0\src\Psi\src\ExtensionsAPI\Tree\TreeElement. >> cs:line >> 75 >> at >> JetBrains.ReSharper.Psi.ExtensionsAPI.Tree.TreeElement.ProcessDescenda >> nts(IRecursiveElementProcessor >> processor) in >> c:\Agent\work\ReSharper2.0\src\Psi\src\ExtensionsAPI\Tree\TreeElement. >> cs:line >> 75 >> at >> JetBrains.ReSharper.Psi.ExtensionsAPI.Tree.TreeElement.ProcessDescenda >> nts(IRecursiveElementProcessor >> processor) in >> c:\Agent\work\ReSharper2.0\src\Psi\src\ExtensionsAPI\Tree\TreeElement. >> cs:line >> 75 >> at >> JetBrains.ReSharper.Psi.ExtensionsAPI.Tree.TreeElement.ProcessDescenda >> nts(IRecursiveElementProcessor >> processor) in >> c:\Agent\work\ReSharper2.0\src\Psi\src\ExtensionsAPI\Tree\TreeElement. >> cs:line >> 75 >> at >> JetBrains.ReSharper.CodeInsight.FindUsages.FindModuleReferenceUsagesAc >> tion.MyProjectVisitor.VisitProjectFile(IProjectFile >> projectFile) in >> c:\Agent\work\ReSharper2.0\src\CodeInsight\src\FindUsages\FindModuleRe >> ferenceUsagesAction.cs:line >> 345 >> at >> JetBrains.ReSharper.ProjectModel.Impl.ProjectFileImpl.Accept(ProjectVi >> sitor >> projectVisitor) in >> c:\Agent\work\ReSharper2.0\src\ProjectModel\src\impl\ProjectFileImpl.c >> s:line >> 128 >> at >> JetBrains.ReSharper.ProjectModel.RecursiveProjectVisitor.VisitProjectI >> tem(IProjectItem >> projectItem) in >> c:\Agent\work\ReSharper2.0\src\ProjectModel\src\ProjectVisitor.cs:line >> 77 >> at >> JetBrains.ReSharper.ProjectModel.ProjectVisitor.VisitProjectFolder(IPr >> ojectFolder >> projectFolder) in >> c:\Agent\work\ReSharper2.0\src\ProjectModel\src\ProjectVisitor.cs:line >> 26 >> at >> JetBrains.ReSharper.ProjectModel.Impl.ProjectFolderImpl.Accept(Project >> Visitor >> projectVisitor) in >> c:\Agent\work\ReSharper2.0\src\ProjectModel\src\impl\ProjectFolderImpl >> .cs:line >> 337 >> at >> JetBrains.ReSharper.ProjectModel.RecursiveProjectVisitor.VisitProjectI >> tem(IProjectItem >> projectItem) in >> c:\Agent\work\ReSharper2.0\src\ProjectModel\src\ProjectVisitor.cs:line >> 77 >> at >> JetBrains.ReSharper.ProjectModel.RecursiveProjectVisitor.VisitProject( >> IProject >> project) in >> c:\Agent\work\ReSharper2.0\src\ProjectModel\src\ProjectVisitor.cs:line >> 82 >> at >> JetBrains.ReSharper.ProjectModel.Impl.ProjectImpl.Accept(ProjectVisito >> r >> projectVisitor) in >> c:\Agent\work\ReSharper2.0\src\ProjectModel\src\impl\ProjectImpl.cs:li >> ne 170 >> at >> JetBrains.ReSharper.CodeInsight.FindUsages.FindModuleReferenceUsagesAc >> tion.MyTaskHelper.Run(IProgressIndicator >> progressIndicator) in >> c:\Agent\work\ReSharper2.0\src\CodeInsight\src\FindUsages\FindModuleRe >> ferenceUsagesAction.cs:line >> 373 >> at >> JetBrains.ReSharper.Shell.Progress.ProgressWindow.AsyncTaskHelper.Thre >> adFunc() >> in >> c:\Agent\work\ReSharper2.0\src\Shell\src\Progress\ProgressWindow.cs:li >> ne >> 479 >> --- End of inner exception stack trace --- >> at JetBrains.ReSharper.Util.Logger.LogExceptionEx(Exception, String, >> Boolean) in c:\Agent\work\ReSharper2.0\src\Util\src\Logger.cs:line 327 >> column 9 >> at JetBrains.ReSharper.Util.Logger.LogException(Exception) in >> c:\Agent\work\ReSharper2.0\src\Util\src\Logger.cs:line 339 column 5 >> at JetBrains.ReSharper.Shell.Progress.AsyncTaskHelper.ThreadFunc() in >> c:\Agent\work\ReSharper2.0\src\Shell\src\Progress\ProgressWindow.cs:li >> ne 487 >> column 11 >> at System.Threading.ThreadHelper.ThreadStart_Context(Object) >> at System.Threading.ExecutionContext.Run(ExecutionContext, >> ContextCallback, >> Object) >> at System.Threading.ThreadHelper.ThreadStart() >> "Dmitry Shaporenkov (JetBrains)" <dsha@jetbrains.com> wrote in message >> news:c8a894d91b6ea78c8acae94eadafd@news.intellij.net... >> >>> Hello Jeff, >>> >>> I have an idea that not releasing memory might be caused by holding >>> some >>> find results opened. >>> What I think of is that the Find Module Usages feature shows its >>> results >>> in the Find Results window, >>> and probably if you have results of previous searches still opened in >>> a >>> tab in this window, the memory might not be released. >>> I'll try to verify this hypothesis, and if you have a chance to check >>> it, >>> I'll be glad to hear of your experience. >>> Regards, >>> Dmitry Shaporenkov >>> JetBrains, Inc >>> http://www.jetbrains.com >>> "Develop with pleasure!" >>>> Yes, the memory seemed to stay with that session and did not get >>>> released. I >>>> ran several other applications to see if the working set would get >>>> trimmed >>>> but it did not change. >>>> I have attached the Performance Graph from process explorer showing >>>> the >>>> results of the three searches I did. You can see how memory usage >>>> increased >>>> during the first search and then stayed at the level on subsequent >>>> searches. >>>> "Dmitry Shaporenkov (JetBrains)" <dsha@jetbrains.com> wrote in >>>> message >>>> news:c8a894d91b6e688c8ac5faf123166@news.intellij.net... >>>>> Hello Jeff, >>>>> >>>>> you're probably right about the performance. Basically, this >>>>> feature >>>>> needs >>>>> to resolve every identifier in each file in the project, >>>>> so this can't be fast. The motivation for this feature was to >>>>> provide >>>>> an >>>>> understanding how a particular reference is used in the project >>>>> which is more functionality than is required for just giving an >>>>> answer to >>>>> the question if it is used at all. >>>>> Concerning the possible memory leak, it's interesting. Do I >>>>> understand >>>>> correctly >>>>> that the huge amount of memory allocated did not >>>>> go away in that working session of VS? Thanks. >>>>> Regards, >>>>> Dmitry Shaporenkov >>>>> JetBrains, Inc >>>>> http://www.jetbrains.com >>>>> "Develop with pleasure!" >>>>>> Hi Dmitry, >>>>>> >>>>>> I tried this and it does work. >>>>>> However: >>>>>> - Performance is slow. It may be faster to delete the reference >>>>>> and >>>>>> check >>>>>> the build log for errors. >>>>>> - There seems to be some kind of memory issue. During the first >>>>>> search, >>>>>> virtual memory usage rose steadily to about 1.1GB. Subsequent >>>>>> searches >>>>>> stayed about the same level and performance continued to degrade >>>>>> to >>>>>> a >>>>>> point >>>>>> where the command was unusable. >>>>>> Jeff >>>>>> "Dmitry Shaporenkov (JetBrains)" <dsha@jetbrains.com> wrote in >>>>>> message news:c8a894d91b6e528c8abe29cef51d4@news.intellij.net... >>>>>>> Hello Jeff, >>>>>>> >>>>>>> there is no fully automatic way to do that. There is, however, a >>>>>>> feature >>>>>>> that may help: >>>>>>> invoke 'Find Module Usages' from context menu on each of the >>>>>>> project >>>>>>> references in question. If no >>>>>>> usages found, the reference can be safely removed. This also >>>>>>> works >>>>>>> for >>>>>>> references to assemblies. >>>>>>> Regards, >>>>>>> Dmitry Shaporenkov >>>>>>> JetBrains, Inc >>>>>>> http://www.jetbrains.com >>>>>>> "Develop with pleasure!" >>>>>>>> Is there a way to clean up project references which are no >>>>>>>> longer needed? >>>>>>>> >
Hello Jeff,
there is no fully automatic way to do that. There is, however, a feature
that may help:
invoke 'Find Module Usages' from context menu on each of the project references
in question. If no
usages found, the reference can be safely removed. This also works for references
to assemblies.
Regards,
Dmitry Shaporenkov
JetBrains, Inc
http://www.jetbrains.com
"Develop with pleasure!"
Hi Dmitry,
I tried this and it does work.
However:
- Performance is slow. It may be faster to delete the reference and check
the build log for errors.
- There seems to be some kind of memory issue. During the first search,
virtual memory usage rose steadily to about 1.1GB. Subsequent searches
stayed about the same level and performance continued to degrade to a point
where the command was unusable.
Jeff
"Dmitry Shaporenkov (JetBrains)" <dsha@jetbrains.com> wrote in message
news:c8a894d91b6e528c8abe29cef51d4@news.intellij.net...
>
>
>
>
>> Is there a way to clean up project references which are no longer
>> needed?
>>
>
Hello Jeff,
you're probably right about the performance. Basically, this feature needs
to resolve every identifier in each file in the project,
so this can't be fast. The motivation for this feature was to provide an
understanding how a particular reference is used in the project
which is more functionality than is required for just giving an answer to
the question if it is used at all.
Concerning the possible memory leak, it's interesting. Do I understand correctly
that the huge amount of memory allocated did not
go away in that working session of VS? Thanks.
Regards,
Dmitry Shaporenkov
JetBrains, Inc
http://www.jetbrains.com
"Develop with pleasure!"
>> Hello Jeff,
>>
>> there is no fully automatic way to do that. There is, however, a
>> feature
>> that may help:
>> invoke 'Find Module Usages' from context menu on each of the project
>> references in question. If no
>> usages found, the reference can be safely removed. This also works
>> for
>> references to assemblies.
>> Regards,
>> Dmitry Shaporenkov
>> JetBrains, Inc
>> http://www.jetbrains.com
>> "Develop with pleasure!"
>>> Is there a way to clean up project references which are no longer
>>> needed?
>>>
Yes, the memory seemed to stay with that session and did not get released. I
ran several other applications to see if the working set would get trimmed
but it did not change.
I have attached the Performance Graph from process explorer showing the
results of the three searches I did. You can see how memory usage increased
during the first search and then stayed at the level on subsequent searches.
"Dmitry Shaporenkov (JetBrains)" <dsha@jetbrains.com> wrote in message
news:c8a894d91b6e688c8ac5faf123166@news.intellij.net...
>
>
>
>
>
>> Hi Dmitry,
>>
>> I tried this and it does work.
>> However:
>> - Performance is slow. It may be faster to delete the reference and
>> check
>> the build log for errors.
>> - There seems to be some kind of memory issue. During the first
>> search,
>> virtual memory usage rose steadily to about 1.1GB. Subsequent searches
>> stayed about the same level and performance continued to degrade to a
>> point
>> where the command was unusable.
>> Jeff
>>
>> "Dmitry Shaporenkov (JetBrains)" <dsha@jetbrains.com> wrote in message
>> news:c8a894d91b6e528c8abe29cef51d4@news.intellij.net...
>>
>>> Hello Jeff,
>>>
>>> there is no fully automatic way to do that. There is, however, a
>>> feature
>>> that may help:
>>> invoke 'Find Module Usages' from context menu on each of the project
>>> references in question. If no
>>> usages found, the reference can be safely removed. This also works
>>> for
>>> references to assemblies.
>>> Regards,
>>> Dmitry Shaporenkov
>>> JetBrains, Inc
>>> http://www.jetbrains.com
>>> "Develop with pleasure!"
>>>> Is there a way to clean up project references which are no longer
>>>> needed?
>>>>
>
Hello Jeff,
I have an idea that not releasing memory might be caused by holding some
find results opened.
What I think of is that the Find Module Usages feature shows its results
in the Find Results window,
and probably if you have results of previous searches still opened in a tab
in this window, the memory might not be released.
I'll try to verify this hypothesis, and if you have a chance to check it,
I'll be glad to hear of your experience.
Regards,
Dmitry Shaporenkov
JetBrains, Inc
http://www.jetbrains.com
"Develop with pleasure!"
>> Hello Jeff,
>>
>> you're probably right about the performance. Basically, this feature
>> needs
>> to resolve every identifier in each file in the project,
>> so this can't be fast. The motivation for this feature was to provide
>> an
>> understanding how a particular reference is used in the project
>> which is more functionality than is required for just giving an
>> answer to
>> the question if it is used at all.
>> Concerning the possible memory leak, it's interesting. Do I
>> understand
>> correctly
>> that the huge amount of memory allocated did not
>> go away in that working session of VS? Thanks.
>> Regards,
>> Dmitry Shaporenkov
>> JetBrains, Inc
>> http://www.jetbrains.com
>> "Develop with pleasure!"
>>> Hi Dmitry,
>>>
>>> I tried this and it does work.
>>> However:
>>> - Performance is slow. It may be faster to delete the reference and
>>> check
>>> the build log for errors.
>>> - There seems to be some kind of memory issue. During the first
>>> search,
>>> virtual memory usage rose steadily to about 1.1GB. Subsequent
>>> searches
>>> stayed about the same level and performance continued to degrade to
>>> a
>>> point
>>> where the command was unusable.
>>> Jeff
>>> "Dmitry Shaporenkov (JetBrains)" <dsha@jetbrains.com> wrote in
>>> message news:c8a894d91b6e528c8abe29cef51d4@news.intellij.net...
>>>
>>>> Hello Jeff,
>>>>
>>>> there is no fully automatic way to do that. There is, however, a
>>>> feature
>>>> that may help:
>>>> invoke 'Find Module Usages' from context menu on each of the
>>>> project
>>>> references in question. If no
>>>> usages found, the reference can be safely removed. This also works
>>>> for
>>>> references to assemblies.
>>>> Regards,
>>>> Dmitry Shaporenkov
>>>> JetBrains, Inc
>>>> http://www.jetbrains.com
>>>> "Develop with pleasure!"
>>>>> Is there a way to clean up project references which are no longer
>>>>> needed?
>>>>>
Hi Dmitry,
I tried closing the search window but it had no effect on memory usage.
When I tried a second search, I got an out of memory exception which I
submitted via JIRA.
Jeff
JetBrains.ReSharper.Util.InternalErrorException: Exception of type
'System.OutOfMemoryException' was thrown.
An exception has occurred ---> System.OutOfMemoryException: Exception of
type 'System.OutOfMemoryException' was thrown.
at System.Collections.Hashtable.rehash(Int32 newsize)
at System.Collections.Hashtable.Insert(Object key, Object nvalue, Boolean
add)
at System.Collections.Hashtable.set_Item(Object key, Object value)
at JetBrains.ReSharper.Util.WeakHashtable.set_Item(Object key, Object
value) in
c:\Agent\work\ReSharper2.0\src\Util\src\dataStructures\WeakHashtable.cs:line
60
at
JetBrains.ReSharper.Psi.Impl.Resolve.ResolveCache.CacheBySourceResult(IRef
reference, ResolveResult value, CachedPsiFile psiFile) in
c:\Agent\work\ReSharper2.0\src\Psi\src\impl\resolve\ResolveCache.cs:line 120
at JetBrains.ReSharper.Psi.Impl.Resolve.ResolveCache.set_Item(IRef
reference, ResolveResult value) in
c:\Agent\work\ReSharper2.0\src\Psi\src\impl\resolve\ResolveCache.cs:line 84
at
JetBrains.ReSharper.Psi.Impl.Resolve.ResolveUtil.ResolveWithCache(IInternalRef
reference) in
c:\Agent\work\ReSharper2.0\src\Psi\src\impl\resolve\ResolveUtil.cs:line 613
at
JetBrains.ReSharper.Psi.CSharp.Impl.Tree.ReferenceExpressionBase.Resolve()
in
c:\Agent\work\ReSharper2.0\src\Psi\src\cSharp\impl\tree\ReferenceExpressionBase.cs:line
212
at
JetBrains.ReSharper.CodeInsight.FindUsages.FindModuleReferenceUsagesAction.MyRecursiveElementProcessor.ProcessAfterInterior(IElement
element) in
c:\Agent\work\ReSharper2.0\src\CodeInsight\src\FindUsages\FindModuleReferenceUsagesAction.cs:line
266
at
JetBrains.ReSharper.Psi.ExtensionsAPI.Tree.TreeElement.ProcessDescendants(IRecursiveElementProcessor
processor) in
c:\Agent\work\ReSharper2.0\src\Psi\src\ExtensionsAPI\Tree\TreeElement.cs:line
76
at
JetBrains.ReSharper.Psi.ExtensionsAPI.Tree.TreeElement.ProcessDescendants(IRecursiveElementProcessor
processor) in
c:\Agent\work\ReSharper2.0\src\Psi\src\ExtensionsAPI\Tree\TreeElement.cs:line
75
at
JetBrains.ReSharper.Psi.ExtensionsAPI.Tree.TreeElement.ProcessDescendants(IRecursiveElementProcessor
processor) in
c:\Agent\work\ReSharper2.0\src\Psi\src\ExtensionsAPI\Tree\TreeElement.cs:line
75
at
JetBrains.ReSharper.Psi.ExtensionsAPI.Tree.TreeElement.ProcessDescendants(IRecursiveElementProcessor
processor) in
c:\Agent\work\ReSharper2.0\src\Psi\src\ExtensionsAPI\Tree\TreeElement.cs:line
75
at
JetBrains.ReSharper.Psi.ExtensionsAPI.Tree.TreeElement.ProcessDescendants(IRecursiveElementProcessor
processor) in
c:\Agent\work\ReSharper2.0\src\Psi\src\ExtensionsAPI\Tree\TreeElement.cs:line
75
at
JetBrains.ReSharper.Psi.ExtensionsAPI.Tree.TreeElement.ProcessDescendants(IRecursiveElementProcessor
processor) in
c:\Agent\work\ReSharper2.0\src\Psi\src\ExtensionsAPI\Tree\TreeElement.cs:line
75
at
JetBrains.ReSharper.Psi.ExtensionsAPI.Tree.TreeElement.ProcessDescendants(IRecursiveElementProcessor
processor) in
c:\Agent\work\ReSharper2.0\src\Psi\src\ExtensionsAPI\Tree\TreeElement.cs:line
75
at
JetBrains.ReSharper.Psi.ExtensionsAPI.Tree.TreeElement.ProcessDescendants(IRecursiveElementProcessor
processor) in
c:\Agent\work\ReSharper2.0\src\Psi\src\ExtensionsAPI\Tree\TreeElement.cs:line
75
at
JetBrains.ReSharper.Psi.ExtensionsAPI.Tree.TreeElement.ProcessDescendants(IRecursiveElementProcessor
processor) in
c:\Agent\work\ReSharper2.0\src\Psi\src\ExtensionsAPI\Tree\TreeElement.cs:line
75
at
JetBrains.ReSharper.CodeInsight.FindUsages.FindModuleReferenceUsagesAction.MyProjectVisitor.VisitProjectFile(IProjectFile
projectFile) in
c:\Agent\work\ReSharper2.0\src\CodeInsight\src\FindUsages\FindModuleReferenceUsagesAction.cs:line
345
at
JetBrains.ReSharper.ProjectModel.Impl.ProjectFileImpl.Accept(ProjectVisitor
projectVisitor) in
c:\Agent\work\ReSharper2.0\src\ProjectModel\src\impl\ProjectFileImpl.cs:line
128
at
JetBrains.ReSharper.ProjectModel.RecursiveProjectVisitor.VisitProjectItem(IProjectItem
projectItem) in
c:\Agent\work\ReSharper2.0\src\ProjectModel\src\ProjectVisitor.cs:line 77
at
JetBrains.ReSharper.ProjectModel.ProjectVisitor.VisitProjectFolder(IProjectFolder
projectFolder) in
c:\Agent\work\ReSharper2.0\src\ProjectModel\src\ProjectVisitor.cs:line 26
at
JetBrains.ReSharper.ProjectModel.Impl.ProjectFolderImpl.Accept(ProjectVisitor
projectVisitor) in
c:\Agent\work\ReSharper2.0\src\ProjectModel\src\impl\ProjectFolderImpl.cs:line
337
at
JetBrains.ReSharper.ProjectModel.RecursiveProjectVisitor.VisitProjectItem(IProjectItem
projectItem) in
c:\Agent\work\ReSharper2.0\src\ProjectModel\src\ProjectVisitor.cs:line 77
at
JetBrains.ReSharper.ProjectModel.RecursiveProjectVisitor.VisitProject(IProject
project) in
c:\Agent\work\ReSharper2.0\src\ProjectModel\src\ProjectVisitor.cs:line 82
at
JetBrains.ReSharper.ProjectModel.Impl.ProjectImpl.Accept(ProjectVisitor
projectVisitor) in
c:\Agent\work\ReSharper2.0\src\ProjectModel\src\impl\ProjectImpl.cs:line 170
at
JetBrains.ReSharper.CodeInsight.FindUsages.FindModuleReferenceUsagesAction.MyTaskHelper.Run(IProgressIndicator
progressIndicator) in
c:\Agent\work\ReSharper2.0\src\CodeInsight\src\FindUsages\FindModuleReferenceUsagesAction.cs:line
373
at
JetBrains.ReSharper.Shell.Progress.ProgressWindow.AsyncTaskHelper.ThreadFunc()
in c:\Agent\work\ReSharper2.0\src\Shell\src\Progress\ProgressWindow.cs:line
479
--- End of inner exception stack trace ---
at JetBrains.ReSharper.Util.Logger.LogExceptionEx(Exception, String,
Boolean) in c:\Agent\work\ReSharper2.0\src\Util\src\Logger.cs:line 327
column 9
at JetBrains.ReSharper.Util.Logger.LogException(Exception) in
c:\Agent\work\ReSharper2.0\src\Util\src\Logger.cs:line 339 column 5
at JetBrains.ReSharper.Shell.Progress.AsyncTaskHelper.ThreadFunc() in
c:\Agent\work\ReSharper2.0\src\Shell\src\Progress\ProgressWindow.cs:line 487
column 11
at System.Threading.ThreadHelper.ThreadStart_Context(Object)
at System.Threading.ExecutionContext.Run(ExecutionContext, ContextCallback,
Object)
at System.Threading.ThreadHelper.ThreadStart()
"Dmitry Shaporenkov (JetBrains)" <dsha@jetbrains.com> wrote in message
news:c8a894d91b6ea78c8acae94eadafd@news.intellij.net...
>
>
>
>> Yes, the memory seemed to stay with that session and did not get
>> released. I
>> ran several other applications to see if the working set would get
>> trimmed
>> but it did not change.
>> I have attached the Performance Graph from process explorer showing
>> the
>> results of the three searches I did. You can see how memory usage
>> increased
>> during the first search and then stayed at the level on subsequent
>> searches.
>> "Dmitry Shaporenkov (JetBrains)" <dsha@jetbrains.com> wrote in message
>> news:c8a894d91b6e688c8ac5faf123166@news.intellij.net...
>>
>>> Hello Jeff,
>>>
>>> you're probably right about the performance. Basically, this feature
>>> needs
>>> to resolve every identifier in each file in the project,
>>> so this can't be fast. The motivation for this feature was to provide
>>> an
>>> understanding how a particular reference is used in the project
>>> which is more functionality than is required for just giving an
>>> answer to
>>> the question if it is used at all.
>>> Concerning the possible memory leak, it's interesting. Do I
>>> understand
>>> correctly
>>> that the huge amount of memory allocated did not
>>> go away in that working session of VS? Thanks.
>>> Regards,
>>> Dmitry Shaporenkov
>>> JetBrains, Inc
>>> http://www.jetbrains.com
>>> "Develop with pleasure!"
>>>> Hi Dmitry,
>>>>
>>>> I tried this and it does work.
>>>> However:
>>>> - Performance is slow. It may be faster to delete the reference and
>>>> check
>>>> the build log for errors.
>>>> - There seems to be some kind of memory issue. During the first
>>>> search,
>>>> virtual memory usage rose steadily to about 1.1GB. Subsequent
>>>> searches
>>>> stayed about the same level and performance continued to degrade to
>>>> a
>>>> point
>>>> where the command was unusable.
>>>> Jeff
>>>> "Dmitry Shaporenkov (JetBrains)" <dsha@jetbrains.com> wrote in
>>>> message news:c8a894d91b6e528c8abe29cef51d4@news.intellij.net...
>>>>
>>>>> Hello Jeff,
>>>>>
>>>>> there is no fully automatic way to do that. There is, however, a
>>>>> feature
>>>>> that may help:
>>>>> invoke 'Find Module Usages' from context menu on each of the
>>>>> project
>>>>> references in question. If no
>>>>> usages found, the reference can be safely removed. This also works
>>>>> for
>>>>> references to assemblies.
>>>>> Regards,
>>>>> Dmitry Shaporenkov
>>>>> JetBrains, Inc
>>>>> http://www.jetbrains.com
>>>>> "Develop with pleasure!"
>>>>>> Is there a way to clean up project references which are no longer
>>>>>> needed?
>>>>>>
>
Hello Jeff,
could you please sketch how large is your solution and the project in question?
Thanks.
Regards,
Dmitry Shaporenkov
JetBrains, Inc
http://www.jetbrains.com
"Develop with pleasure!"
>> Hello Jeff,
>>
>> I have an idea that not releasing memory might be caused by holding
>> some
>> find results opened.
>> What I think of is that the Find Module Usages feature shows its
>> results
>> in the Find Results window,
>> and probably if you have results of previous searches still opened in
>> a
>> tab in this window, the memory might not be released.
>> I'll try to verify this hypothesis, and if you have a chance to check
>> it,
>> I'll be glad to hear of your experience.
>> Regards,
>> Dmitry Shaporenkov
>> JetBrains, Inc
>> http://www.jetbrains.com
>> "Develop with pleasure!"
>>> Yes, the memory seemed to stay with that session and did not get
>>> released. I
>>> ran several other applications to see if the working set would get
>>> trimmed
>>> but it did not change.
>>> I have attached the Performance Graph from process explorer showing
>>> the
>>> results of the three searches I did. You can see how memory usage
>>> increased
>>> during the first search and then stayed at the level on subsequent
>>> searches.
>>> "Dmitry Shaporenkov (JetBrains)" <dsha@jetbrains.com> wrote in
>>> message
>>> news:c8a894d91b6e688c8ac5faf123166@news.intellij.net...
>>>> Hello Jeff,
>>>>
>>>> you're probably right about the performance. Basically, this
>>>> feature
>>>> needs
>>>> to resolve every identifier in each file in the project,
>>>> so this can't be fast. The motivation for this feature was to
>>>> provide
>>>> an
>>>> understanding how a particular reference is used in the project
>>>> which is more functionality than is required for just giving an
>>>> answer to
>>>> the question if it is used at all.
>>>> Concerning the possible memory leak, it's interesting. Do I
>>>> understand
>>>> correctly
>>>> that the huge amount of memory allocated did not
>>>> go away in that working session of VS? Thanks.
>>>> Regards,
>>>> Dmitry Shaporenkov
>>>> JetBrains, Inc
>>>> http://www.jetbrains.com
>>>> "Develop with pleasure!"
>>>>> Hi Dmitry,
>>>>>
>>>>> I tried this and it does work.
>>>>> However:
>>>>> - Performance is slow. It may be faster to delete the reference
>>>>> and
>>>>> check
>>>>> the build log for errors.
>>>>> - There seems to be some kind of memory issue. During the first
>>>>> search,
>>>>> virtual memory usage rose steadily to about 1.1GB. Subsequent
>>>>> searches
>>>>> stayed about the same level and performance continued to degrade
>>>>> to
>>>>> a
>>>>> point
>>>>> where the command was unusable.
>>>>> Jeff
>>>>> "Dmitry Shaporenkov (JetBrains)" <dsha@jetbrains.com> wrote in
>>>>> message news:c8a894d91b6e528c8abe29cef51d4@news.intellij.net...
>>>>>> Hello Jeff,
>>>>>>
>>>>>> there is no fully automatic way to do that. There is, however, a
>>>>>> feature
>>>>>> that may help:
>>>>>> invoke 'Find Module Usages' from context menu on each of the
>>>>>> project
>>>>>> references in question. If no
>>>>>> usages found, the reference can be safely removed. This also
>>>>>> works
>>>>>> for
>>>>>> references to assemblies.
>>>>>> Regards,
>>>>>> Dmitry Shaporenkov
>>>>>> JetBrains, Inc
>>>>>> http://www.jetbrains.com
>>>>>> "Develop with pleasure!"
>>>>>>> Is there a way to clean up project references which are no
>>>>>>> longer needed?
>>>>>>>
Hi Dmitry,
My solution has 12 projects.
The project I am searching is large - it has about 1600 files.
Jeff
"Dmitry Shaporenkov (JetBrains)" <dsha@jetbrains.com> wrote in message
news:c8a894d91b6ed78c8aed810fd2cd8@news.intellij.net...
>
>
>
>
>> Hi Dmitry,
>> I tried closing the search window but it had no effect on memory
>> usage.
>> When I tried a second search, I got an out of memory exception which I
>> submitted via JIRA.
>> Jeff
>> JetBrains.ReSharper.Util.InternalErrorException: Exception of type
>> 'System.OutOfMemoryException' was thrown.
>> An exception has occurred ---> System.OutOfMemoryException: Exception
>> of
>> type 'System.OutOfMemoryException' was thrown.
>> at System.Collections.Hashtable.rehash(Int32 newsize)
>> at System.Collections.Hashtable.Insert(Object key, Object nvalue,
>> Boolean
>> add)
>> at System.Collections.Hashtable.set_Item(Object key, Object value)
>> at JetBrains.ReSharper.Util.WeakHashtable.set_Item(Object key,
>> Object
>> value) in
>> c:\Agent\work\ReSharper2.0\src\Util\src\dataStructures\WeakHashtable.c
>> s:line
>> 60
>> at
>> JetBrains.ReSharper.Psi.Impl.Resolve.ResolveCache.CacheBySourceResult(
>> IRef
>> reference, ResolveResult value, CachedPsiFile psiFile) in
>> c:\Agent\work\ReSharper2.0\src\Psi\src\impl\resolve\ResolveCache.cs:li
>> ne 120
>> at JetBrains.ReSharper.Psi.Impl.Resolve.ResolveCache.set_Item(IRef
>> reference, ResolveResult value) in
>> c:\Agent\work\ReSharper2.0\src\Psi\src\impl\resolve\ResolveCache.cs:li
>> ne 84
>> at
>> JetBrains.ReSharper.Psi.Impl.Resolve.ResolveUtil.ResolveWithCache(IInt
>> ernalRef
>> reference) in
>> c:\Agent\work\ReSharper2.0\src\Psi\src\impl\resolve\ResolveUtil.cs:lin
>> e 613
>> at
>> JetBrains.ReSharper.Psi.CSharp.Impl.Tree.ReferenceExpressionBase.Resol
>> ve()
>> in
>> c:\Agent\work\ReSharper2.0\src\Psi\src\cSharp\impl\tree\ReferenceExpre
>> ssionBase.cs:line
>> 212
>> at
>> JetBrains.ReSharper.CodeInsight.FindUsages.FindModuleReferenceUsagesAc
>> tion.MyRecursiveElementProcessor.ProcessAfterInterior(IElement
>> element) in
>> c:\Agent\work\ReSharper2.0\src\CodeInsight\src\FindUsages\FindModuleRe
>> ferenceUsagesAction.cs:line
>> 266
>> at
>> JetBrains.ReSharper.Psi.ExtensionsAPI.Tree.TreeElement.ProcessDescenda
>> nts(IRecursiveElementProcessor
>> processor) in
>> c:\Agent\work\ReSharper2.0\src\Psi\src\ExtensionsAPI\Tree\TreeElement.
>> cs:line
>> 76
>> at
>> JetBrains.ReSharper.Psi.ExtensionsAPI.Tree.TreeElement.ProcessDescenda
>> nts(IRecursiveElementProcessor
>> processor) in
>> c:\Agent\work\ReSharper2.0\src\Psi\src\ExtensionsAPI\Tree\TreeElement.
>> cs:line
>> 75
>> at
>> JetBrains.ReSharper.Psi.ExtensionsAPI.Tree.TreeElement.ProcessDescenda
>> nts(IRecursiveElementProcessor
>> processor) in
>> c:\Agent\work\ReSharper2.0\src\Psi\src\ExtensionsAPI\Tree\TreeElement.
>> cs:line
>> 75
>> at
>> JetBrains.ReSharper.Psi.ExtensionsAPI.Tree.TreeElement.ProcessDescenda
>> nts(IRecursiveElementProcessor
>> processor) in
>> c:\Agent\work\ReSharper2.0\src\Psi\src\ExtensionsAPI\Tree\TreeElement.
>> cs:line
>> 75
>> at
>> JetBrains.ReSharper.Psi.ExtensionsAPI.Tree.TreeElement.ProcessDescenda
>> nts(IRecursiveElementProcessor
>> processor) in
>> c:\Agent\work\ReSharper2.0\src\Psi\src\ExtensionsAPI\Tree\TreeElement.
>> cs:line
>> 75
>> at
>> JetBrains.ReSharper.Psi.ExtensionsAPI.Tree.TreeElement.ProcessDescenda
>> nts(IRecursiveElementProcessor
>> processor) in
>> c:\Agent\work\ReSharper2.0\src\Psi\src\ExtensionsAPI\Tree\TreeElement.
>> cs:line
>> 75
>> at
>> JetBrains.ReSharper.Psi.ExtensionsAPI.Tree.TreeElement.ProcessDescenda
>> nts(IRecursiveElementProcessor
>> processor) in
>> c:\Agent\work\ReSharper2.0\src\Psi\src\ExtensionsAPI\Tree\TreeElement.
>> cs:line
>> 75
>> at
>> JetBrains.ReSharper.Psi.ExtensionsAPI.Tree.TreeElement.ProcessDescenda
>> nts(IRecursiveElementProcessor
>> processor) in
>> c:\Agent\work\ReSharper2.0\src\Psi\src\ExtensionsAPI\Tree\TreeElement.
>> cs:line
>> 75
>> at
>> JetBrains.ReSharper.Psi.ExtensionsAPI.Tree.TreeElement.ProcessDescenda
>> nts(IRecursiveElementProcessor
>> processor) in
>> c:\Agent\work\ReSharper2.0\src\Psi\src\ExtensionsAPI\Tree\TreeElement.
>> cs:line
>> 75
>> at
>> JetBrains.ReSharper.CodeInsight.FindUsages.FindModuleReferenceUsagesAc
>> tion.MyProjectVisitor.VisitProjectFile(IProjectFile
>> projectFile) in
>> c:\Agent\work\ReSharper2.0\src\CodeInsight\src\FindUsages\FindModuleRe
>> ferenceUsagesAction.cs:line
>> 345
>> at
>> JetBrains.ReSharper.ProjectModel.Impl.ProjectFileImpl.Accept(ProjectVi
>> sitor
>> projectVisitor) in
>> c:\Agent\work\ReSharper2.0\src\ProjectModel\src\impl\ProjectFileImpl.c
>> s:line
>> 128
>> at
>> JetBrains.ReSharper.ProjectModel.RecursiveProjectVisitor.VisitProjectI
>> tem(IProjectItem
>> projectItem) in
>> c:\Agent\work\ReSharper2.0\src\ProjectModel\src\ProjectVisitor.cs:line
>> 77
>> at
>> JetBrains.ReSharper.ProjectModel.ProjectVisitor.VisitProjectFolder(IPr
>> ojectFolder
>> projectFolder) in
>> c:\Agent\work\ReSharper2.0\src\ProjectModel\src\ProjectVisitor.cs:line
>> 26
>> at
>> JetBrains.ReSharper.ProjectModel.Impl.ProjectFolderImpl.Accept(Project
>> Visitor
>> projectVisitor) in
>> c:\Agent\work\ReSharper2.0\src\ProjectModel\src\impl\ProjectFolderImpl
>> .cs:line
>> 337
>> at
>> JetBrains.ReSharper.ProjectModel.RecursiveProjectVisitor.VisitProjectI
>> tem(IProjectItem
>> projectItem) in
>> c:\Agent\work\ReSharper2.0\src\ProjectModel\src\ProjectVisitor.cs:line
>> 77
>> at
>> JetBrains.ReSharper.ProjectModel.RecursiveProjectVisitor.VisitProject(
>> IProject
>> project) in
>> c:\Agent\work\ReSharper2.0\src\ProjectModel\src\ProjectVisitor.cs:line
>> 82
>> at
>> JetBrains.ReSharper.ProjectModel.Impl.ProjectImpl.Accept(ProjectVisito
>> r
>> projectVisitor) in
>> c:\Agent\work\ReSharper2.0\src\ProjectModel\src\impl\ProjectImpl.cs:li
>> ne 170
>> at
>> JetBrains.ReSharper.CodeInsight.FindUsages.FindModuleReferenceUsagesAc
>> tion.MyTaskHelper.Run(IProgressIndicator
>> progressIndicator) in
>> c:\Agent\work\ReSharper2.0\src\CodeInsight\src\FindUsages\FindModuleRe
>> ferenceUsagesAction.cs:line
>> 373
>> at
>> JetBrains.ReSharper.Shell.Progress.ProgressWindow.AsyncTaskHelper.Thre
>> adFunc()
>> in
>> c:\Agent\work\ReSharper2.0\src\Shell\src\Progress\ProgressWindow.cs:li
>> ne
>> 479
>> --- End of inner exception stack trace ---
>> at JetBrains.ReSharper.Util.Logger.LogExceptionEx(Exception, String,
>> Boolean) in c:\Agent\work\ReSharper2.0\src\Util\src\Logger.cs:line 327
>> column 9
>> at JetBrains.ReSharper.Util.Logger.LogException(Exception) in
>> c:\Agent\work\ReSharper2.0\src\Util\src\Logger.cs:line 339 column 5
>> at JetBrains.ReSharper.Shell.Progress.AsyncTaskHelper.ThreadFunc() in
>> c:\Agent\work\ReSharper2.0\src\Shell\src\Progress\ProgressWindow.cs:li
>> ne 487
>> column 11
>> at System.Threading.ThreadHelper.ThreadStart_Context(Object)
>> at System.Threading.ExecutionContext.Run(ExecutionContext,
>> ContextCallback,
>> Object)
>> at System.Threading.ThreadHelper.ThreadStart()
>> "Dmitry Shaporenkov (JetBrains)" <dsha@jetbrains.com> wrote in message
>> news:c8a894d91b6ea78c8acae94eadafd@news.intellij.net...
>>
>>> Hello Jeff,
>>>
>>> I have an idea that not releasing memory might be caused by holding
>>> some
>>> find results opened.
>>> What I think of is that the Find Module Usages feature shows its
>>> results
>>> in the Find Results window,
>>> and probably if you have results of previous searches still opened in
>>> a
>>> tab in this window, the memory might not be released.
>>> I'll try to verify this hypothesis, and if you have a chance to check
>>> it,
>>> I'll be glad to hear of your experience.
>>> Regards,
>>> Dmitry Shaporenkov
>>> JetBrains, Inc
>>> http://www.jetbrains.com
>>> "Develop with pleasure!"
>>>> Yes, the memory seemed to stay with that session and did not get
>>>> released. I
>>>> ran several other applications to see if the working set would get
>>>> trimmed
>>>> but it did not change.
>>>> I have attached the Performance Graph from process explorer showing
>>>> the
>>>> results of the three searches I did. You can see how memory usage
>>>> increased
>>>> during the first search and then stayed at the level on subsequent
>>>> searches.
>>>> "Dmitry Shaporenkov (JetBrains)" <dsha@jetbrains.com> wrote in
>>>> message
>>>> news:c8a894d91b6e688c8ac5faf123166@news.intellij.net...
>>>>> Hello Jeff,
>>>>>
>>>>> you're probably right about the performance. Basically, this
>>>>> feature
>>>>> needs
>>>>> to resolve every identifier in each file in the project,
>>>>> so this can't be fast. The motivation for this feature was to
>>>>> provide
>>>>> an
>>>>> understanding how a particular reference is used in the project
>>>>> which is more functionality than is required for just giving an
>>>>> answer to
>>>>> the question if it is used at all.
>>>>> Concerning the possible memory leak, it's interesting. Do I
>>>>> understand
>>>>> correctly
>>>>> that the huge amount of memory allocated did not
>>>>> go away in that working session of VS? Thanks.
>>>>> Regards,
>>>>> Dmitry Shaporenkov
>>>>> JetBrains, Inc
>>>>> http://www.jetbrains.com
>>>>> "Develop with pleasure!"
>>>>>> Hi Dmitry,
>>>>>>
>>>>>> I tried this and it does work.
>>>>>> However:
>>>>>> - Performance is slow. It may be faster to delete the reference
>>>>>> and
>>>>>> check
>>>>>> the build log for errors.
>>>>>> - There seems to be some kind of memory issue. During the first
>>>>>> search,
>>>>>> virtual memory usage rose steadily to about 1.1GB. Subsequent
>>>>>> searches
>>>>>> stayed about the same level and performance continued to degrade
>>>>>> to
>>>>>> a
>>>>>> point
>>>>>> where the command was unusable.
>>>>>> Jeff
>>>>>> "Dmitry Shaporenkov (JetBrains)" <dsha@jetbrains.com> wrote in
>>>>>> message news:c8a894d91b6e528c8abe29cef51d4@news.intellij.net...
>>>>>>> Hello Jeff,
>>>>>>>
>>>>>>> there is no fully automatic way to do that. There is, however, a
>>>>>>> feature
>>>>>>> that may help:
>>>>>>> invoke 'Find Module Usages' from context menu on each of the
>>>>>>> project
>>>>>>> references in question. If no
>>>>>>> usages found, the reference can be safely removed. This also
>>>>>>> works
>>>>>>> for
>>>>>>> references to assemblies.
>>>>>>> Regards,
>>>>>>> Dmitry Shaporenkov
>>>>>>> JetBrains, Inc
>>>>>>> http://www.jetbrains.com
>>>>>>> "Develop with pleasure!"
>>>>>>>> Is there a way to clean up project references which are no
>>>>>>>> longer needed?
>>>>>>>>
>