@@ -46,14 +46,15 @@ public WorkloadManifestUpdater(IReporter reporter,
4646 IWorkloadManifestInstaller workloadManifestInstaller ,
4747 PackageSourceLocation packageSourceLocation = null ,
4848 Func < string , string > getEnvironmentVariable = null ,
49- bool displayManifestUpdates = true )
49+ bool displayManifestUpdates = true ,
50+ SdkFeatureBand ? sdkFeatureBand = null )
5051 {
5152 _reporter = reporter ;
5253 _workloadResolver = workloadResolver ;
5354 _userProfileDir = userProfileDir ;
5455 _tempDirPath = tempDirPath ;
5556 _nugetPackageDownloader = nugetPackageDownloader ;
56- _sdkFeatureBand = new SdkFeatureBand ( _workloadResolver . GetSdkFeatureBand ( ) ) ;
57+ _sdkFeatureBand = sdkFeatureBand ?? new SdkFeatureBand ( _workloadResolver . GetSdkFeatureBand ( ) ) ;
5758 _packageSourceLocation = packageSourceLocation ;
5859 _getEnvironmentVariable = getEnvironmentVariable ?? Environment . GetEnvironmentVariable ;
5960 _workloadRecordRepo = workloadRecordRepo ;
@@ -239,29 +240,26 @@ public IEnumerable<ManifestVersionUpdate> CalculateManifestRollbacks(string roll
239240 }
240241
241242
242- public async Task < IEnumerable < WorkloadDownload > > GetManifestPackageDownloadsAsync ( bool includePreviews )
243+ public async Task < IEnumerable < WorkloadDownload > > GetManifestPackageDownloadsAsync ( bool includePreviews , SdkFeatureBand providedSdkFeatureBand , SdkFeatureBand installedSdkFeatureBand )
243244 {
244- var packageIds = GetInstalledManifestIds ( )
245- . Select ( manifestId => _workloadManifestInstaller . GetManifestPackageId ( manifestId , _sdkFeatureBand ) ) ;
246-
247245 var downloads = new List < WorkloadDownload > ( ) ;
248246 foreach ( var manifest in _workloadResolver . GetInstalledManifests ( ) )
249247 {
250248 try
251249 {
252-
253- var packageId = _workloadManifestInstaller . GetManifestPackageId ( new ManifestId ( manifest . Id ) , _sdkFeatureBand ) ;
250+ var packageId = _workloadManifestInstaller . GetManifestPackageId ( new ManifestId ( manifest . Id ) , providedSdkFeatureBand ) ;
254251
255252 bool success ;
253+ // After checking the --sdk-version, check the current sdk band, and then the manifest band in that order
256254 ( success , var latestVersion ) = await GetPackageVersion ( packageId , packageSourceLocation : _packageSourceLocation , includePreview : includePreviews ) ;
257255 if ( success )
258256 {
259257 downloads . Add ( new WorkloadDownload ( manifest . Id , packageId . ToString ( ) , latestVersion . ToString ( ) ) ) ;
260258 }
261- if ( ! success )
259+
260+ if ( ! success && ! installedSdkFeatureBand . Equals ( providedSdkFeatureBand ) )
262261 {
263- var newFeatureBand = new SdkFeatureBand ( manifest . ManifestFeatureBand ) ;
264- var newPackageId = _workloadManifestInstaller . GetManifestPackageId ( new ManifestId ( manifest . Id ) , newFeatureBand ) ;
262+ var newPackageId = _workloadManifestInstaller . GetManifestPackageId ( new ManifestId ( manifest . Id ) , installedSdkFeatureBand ) ;
265263
266264 ( success , latestVersion ) = await GetPackageVersion ( newPackageId , packageSourceLocation : _packageSourceLocation , includePreview : includePreviews ) ;
267265
@@ -270,6 +268,18 @@ public async Task<IEnumerable<WorkloadDownload>> GetManifestPackageDownloadsAsyn
270268 downloads . Add ( new WorkloadDownload ( manifest . Id , newPackageId . ToString ( ) , latestVersion . ToString ( ) ) ) ;
271269 }
272270 }
271+ var fallbackFeatureBand = new SdkFeatureBand ( manifest . ManifestFeatureBand ) ;
272+ if ( ! success && ! fallbackFeatureBand . Equals ( installedSdkFeatureBand ) )
273+ {
274+ var newPackageId = _workloadManifestInstaller . GetManifestPackageId ( new ManifestId ( manifest . Id ) , fallbackFeatureBand ) ;
275+
276+ ( success , latestVersion ) = await GetPackageVersion ( newPackageId , packageSourceLocation : _packageSourceLocation , includePreview : includePreviews ) ;
277+
278+ if ( success )
279+ {
280+ downloads . Add ( new WorkloadDownload ( manifest . Id , newPackageId . ToString ( ) , latestVersion . ToString ( ) ) ) ;
281+ }
282+ }
273283 if ( ! success )
274284 {
275285 _reporter . WriteLine ( string . Format ( LocalizableStrings . ManifestPackageUrlNotResolved , packageId ) ) ;
0 commit comments