@@ -166,7 +166,10 @@ private static bool IsWinGetManager(IPackageManager manager)
166166#endif
167167 }
168168
169- protected async Task < IPackage > ResolveInstalledPackageSnapshotAsync ( string fallbackVersion )
169+ protected async Task < IPackage > ResolveInstalledPackageSnapshotAsync (
170+ string fallbackVersion ,
171+ bool preferFallbackVersionWhenMissing = false
172+ )
170173 {
171174 try
172175 {
@@ -191,6 +194,11 @@ protected async Task<IPackage> ResolveInstalledPackageSnapshotAsync(string fallb
191194 {
192195 return exactMatch ;
193196 }
197+
198+ if ( preferFallbackVersionWhenMissing )
199+ {
200+ return CreateSyntheticInstalledPackage ( fallbackVersion ) ;
201+ }
194202 }
195203
196204 return installedMatches
@@ -206,10 +214,15 @@ protected async Task<IPackage> ResolveInstalledPackageSnapshotAsync(string fallb
206214 Logger . Warn ( ex ) ;
207215 }
208216
217+ return CreateSyntheticInstalledPackage ( fallbackVersion ) ;
218+ }
219+
220+ private IPackage CreateSyntheticInstalledPackage ( string version )
221+ {
209222 return new Package (
210223 Package . Name ,
211224 Package . Id ,
212- fallbackVersion ,
225+ version ,
213226 Package . Source ,
214227 Package . Manager ,
215228 Package . OverridenOptions
@@ -312,8 +325,10 @@ protected override Task HandleFailure()
312325 protected override async Task HandleSuccess ( )
313326 {
314327 Package . SetTag ( PackageTag . AlreadyInstalled ) ;
328+ bool explicitVersionRequested = ! string . IsNullOrWhiteSpace ( Options . Version ) ;
315329 var installedPackage = await ResolveInstalledPackageSnapshotAsync (
316- string . IsNullOrWhiteSpace ( Options . Version ) ? Package . VersionString : Options . Version
330+ explicitVersionRequested ? Options . Version : Package . VersionString ,
331+ preferFallbackVersionWhenMissing : explicitVersionRequested
317332 ) ;
318333 await InstalledPackagesLoader . Instance . AddForeign ( installedPackage ) ;
319334
@@ -388,10 +403,14 @@ protected override async Task HandleSuccess()
388403 UpgradablePackagesLoader . Instance . Remove ( Package ) ;
389404 InstalledPackagesLoader . Instance . Remove ( Package ) ;
390405
406+ bool explicitVersionRequested = ! string . IsNullOrWhiteSpace ( Options . Version ) ;
391407 var installedPackage = await ResolveInstalledPackageSnapshotAsync (
392- string . IsNullOrWhiteSpace ( Package . NewVersionString )
393- ? Package . VersionString
394- : Package . NewVersionString
408+ explicitVersionRequested
409+ ? Options . Version
410+ : string . IsNullOrWhiteSpace ( Package . NewVersionString )
411+ ? Package . VersionString
412+ : Package . NewVersionString ,
413+ preferFallbackVersionWhenMissing : explicitVersionRequested
395414 ) ;
396415 await InstalledPackagesLoader . Instance . AddForeign ( installedPackage ) ;
397416
0 commit comments