10
10
using Newtonsoft . Json . Linq ;
11
11
using NuGet . Client ;
12
12
using NuGet . Commands ;
13
+ using NuGet . Commands . Restore ;
13
14
using NuGet . Common ;
14
15
using NuGet . Configuration ;
15
16
using NuGet . ContentModel ;
@@ -272,10 +273,50 @@ protected virtual void DownloadTool(
272
273
DownloadAndExtractPackage ( packageId , nugetPackageDownloader , packageDownloadDir . Value , packageVersion , packageSourceLocation , includeUnlisted : givenSpecificVersion ) ;
273
274
}
274
275
275
- CreateAssetFile ( packageId , packageVersion , packageDownloadDir , Path . Combine ( assetFileDirectory . Value , "project.assets.json" ) , _runtimeJsonPath , targetFramework ) ;
276
+ CreateAssetFile ( packageId , packageVersion , packageDownloadDir , Path . Combine ( assetFileDirectory . Value , ToolPackageInstance . AssetsFileName ) , _runtimeJsonPath , targetFramework ) ;
276
277
277
278
// Also download RID-specific package if needed
279
+ var ridSpecificPackage = ResolveRidSpecificPackage ( packageId , packageVersion , packageDownloadDir , assetFileDirectory ) ;
280
+ if ( ridSpecificPackage != null )
281
+ {
282
+ if ( ! IsPackageInstalled ( new PackageId ( ridSpecificPackage . Id ) , ridSpecificPackage . Version , packageDownloadDir . Value ) )
283
+ {
284
+ DownloadAndExtractPackage ( new PackageId ( ridSpecificPackage . Id ) , nugetPackageDownloader , packageDownloadDir . Value , ridSpecificPackage . Version , packageSourceLocation , includeUnlisted : true ) ;
285
+ }
286
+
287
+ CreateAssetFile ( new PackageId ( ridSpecificPackage . Id ) , ridSpecificPackage . Version , packageDownloadDir , Path . Combine ( assetFileDirectory . Value , ToolPackageInstance . RidSpecificPackageAssetsFileName ) , _runtimeJsonPath , targetFramework ) ;
288
+ }
289
+ }
290
+
291
+ public bool IsLocalToolDownloaded (
292
+ PackageId packageId ,
293
+ NuGetVersion packageVersion ,
294
+ string ? targetFramework = null )
295
+ {
296
+ if ( ! IsPackageInstalled ( packageId , packageVersion , _localToolDownloadDir . Value ) )
297
+ {
298
+ return false ;
299
+ }
300
+ CreateAssetFile ( packageId , packageVersion , _localToolDownloadDir , Path . Combine ( _localToolAssetDir . Value , ToolPackageInstance . AssetsFileName ) , _runtimeJsonPath , targetFramework ) ;
301
+
302
+ var ridSpecificPackage = ResolveRidSpecificPackage ( packageId , packageVersion , _localToolDownloadDir , _localToolAssetDir ) ;
303
+ if ( ridSpecificPackage != null )
304
+ {
305
+ return IsPackageInstalled ( new PackageId ( ridSpecificPackage . Id ) , ridSpecificPackage . Version , _localToolDownloadDir . Value ) ;
306
+ }
307
+ else
308
+ {
309
+ return true ;
310
+ }
311
+ }
312
+
313
+ private PackageIdentity ? ResolveRidSpecificPackage ( PackageId packageId ,
314
+ NuGetVersion packageVersion ,
315
+ DirectoryPath packageDownloadDir ,
316
+ DirectoryPath assetFileDirectory )
317
+ {
278
318
var toolConfiguration = GetToolConfiguration ( packageId , packageDownloadDir , assetFileDirectory ) ;
319
+
279
320
if ( toolConfiguration . RidSpecificPackages ? . Any ( ) == true )
280
321
{
281
322
var runtimeGraph = JsonRuntimeFormat . ReadRuntimeGraph ( _runtimeJsonPath ) ;
@@ -288,16 +329,11 @@ protected virtual void DownloadTool(
288
329
289
330
var resolvedPackage = toolConfiguration . RidSpecificPackages [ bestRuntimeIdentifier ] ;
290
331
291
- if ( ! IsPackageInstalled ( new PackageId ( resolvedPackage . Id ) , resolvedPackage . Version , packageDownloadDir . Value ) )
292
- {
293
- DownloadAndExtractPackage ( new PackageId ( resolvedPackage . Id ) , nugetPackageDownloader , packageDownloadDir . Value , resolvedPackage . Version , packageSourceLocation , includeUnlisted : true ) ;
294
- }
295
-
296
- CreateAssetFile ( new PackageId ( resolvedPackage . Id ) , resolvedPackage . Version , packageDownloadDir , Path . Combine ( assetFileDirectory . Value , ToolPackageInstance . RidSpecificPackageAssetsFileName ) , _runtimeJsonPath , targetFramework ) ;
332
+ return resolvedPackage ;
297
333
}
298
- }
299
334
300
-
335
+ return null ;
336
+ }
301
337
302
338
protected void UpdateRuntimeConfig (
303
339
ToolPackageInstance toolPackageInstance
@@ -320,12 +356,11 @@ ToolPackageInstance toolPackageInstance
320
356
}
321
357
}
322
358
323
- public virtual NuGetVersion GetNuGetVersion (
359
+ public virtual ( NuGetVersion version , PackageSource source ) GetNuGetVersion (
324
360
PackageLocation packageLocation ,
325
361
PackageId packageId ,
326
362
VerbosityOptions verbosity ,
327
363
VersionRange ? versionRange = null ,
328
- bool isGlobalTool = false ,
329
364
RestoreActionConfig ? restoreActionConfig = null )
330
365
{
331
366
if ( versionRange == null )
@@ -346,6 +381,6 @@ public virtual NuGetVersion GetNuGetVersion(
346
381
additionalSourceFeeds : packageLocation . AdditionalFeeds ,
347
382
basePath : _currentWorkingDirectory ) ;
348
383
349
- return nugetPackageDownloader . GetBestPackageVersionAsync ( packageId , versionRange , packageSourceLocation ) . GetAwaiter ( ) . GetResult ( ) ;
384
+ return nugetPackageDownloader . GetBestPackageVersionAndSourceAsync ( packageId , versionRange , packageSourceLocation ) . GetAwaiter ( ) . GetResult ( ) ;
350
385
}
351
386
}
0 commit comments