Setup steps:
Repro steps:
Expected result: INuGetProjectManagerService.GetInstalledPackagesAsync(...) will be called once per project.
Actual result: INuGetProjectManagerService.GetInstalledPackagesAsync(...) is called 4 times for 1 project.
Unique callstacks (in call order):
NuGet.PackageManagement.UI.PackageManagerControl.PackageManagerLoaded(object sender, System.Windows.RoutedEventArgs e)NuGet.PackageManagement.UI.PackageItemLoader.UpdateStateAndReportAsync(NuGet.PackageManagement.VisualStudio.SearchResult<NuGet.Protocol.Core.Types.IPackageSearchMetadata> searchResult, System.IProgress<NuGet.PackageManagement.UI.IItemLoaderState> progress, System.Threading.CancellationToken cancellationToken)NuGet.PackageManagement.UI.PackageManagerControl.RefreshInstalledAndUpdatesTabs()NuGet.PackageManagement.VisualStudio.UpdatePackageFeed.GetPackagesWithUpdatesAsync(string searchText, NuGet.Protocol.Core.Types.SearchFilter searchFilter, System.Threading.CancellationToken cancellationToken)FYI @donnie-msft, @erdembayar, @sbanni, @rrelyea
@dtivel I was just chatting with @jebriede about the unnecessary RefreshInstalledAndUpdatesTabs call.
...yes, our UI isn't particularly efficient today. We have several refactoring efforts ongoing to improve this.
Is this just an "FYI" issue, or are you blocked? Is it overtly hurting CodeSpace work or anything?
I am not blocked on this.
I think this can be tackled independently of CodeSpaces; however, both standalone and CodeSpaces-connected clients stand to benefit significantly from reducing this down to 1 call. If you have _n_ projects in your solution, making 4 _n_ calls won't scale performantly.
Most helpful comment
I am not blocked on this.
I think this can be tackled independently of CodeSpaces; however, both standalone and CodeSpaces-connected clients stand to benefit significantly from reducing this down to 1 call. If you have _n_ projects in your solution, making 4 _n_ calls won't scale performantly.