@@ -323,6 +323,23 @@ private void Restore(IEnumerable<string> targets, string? pathToNugetConfig = nu
323
323
}
324
324
}
325
325
326
+ private static string GetGroup ( ReadOnlySpan < char > input , ValueMatch valueMatch , string groupPrefix )
327
+ {
328
+ var match = input . Slice ( valueMatch . Index , valueMatch . Length ) ;
329
+ var includeIndex = match . IndexOf ( groupPrefix , StringComparison . InvariantCultureIgnoreCase ) ;
330
+ if ( includeIndex == - 1 )
331
+ {
332
+ return string . Empty ;
333
+ }
334
+
335
+ match = match . Slice ( includeIndex + groupPrefix . Length + 1 ) ;
336
+
337
+ var quoteIndex1 = match . IndexOf ( "\" " ) ;
338
+ var quoteIndex2 = match . Slice ( quoteIndex1 + 1 ) . IndexOf ( "\" " ) ;
339
+
340
+ return match . Slice ( quoteIndex1 + 1 , quoteIndex2 ) . ToString ( ) . ToLowerInvariant ( ) ;
341
+ }
342
+
326
343
private void DownloadMissingPackages ( IEnumerable < string > restoreTargets )
327
344
{
328
345
var alreadyDownloadedPackages = Directory . GetDirectories ( packageDirectory . DirInfo . FullName ) . Select ( d => Path . GetFileName ( d ) . ToLowerInvariant ( ) ) . ToHashSet ( ) ;
@@ -356,20 +373,8 @@ private void DownloadMissingPackages(IEnumerable<string> restoreTargets)
356
373
foreach ( var valueMatch in PackageReference ( ) . EnumerateMatches ( line ) )
357
374
{
358
375
// We can't get the group from the ValueMatch, so doing it manually:
359
- var match = line . Slice ( valueMatch . Index , valueMatch . Length ) ;
360
- var includeIndex = match . IndexOf ( "Include" , StringComparison . InvariantCultureIgnoreCase ) ;
361
- if ( includeIndex == - 1 )
362
- {
363
- continue ;
364
- }
365
-
366
- match = match . Slice ( includeIndex + "Include" . Length + 1 ) ;
367
-
368
- var quoteIndex1 = match . IndexOf ( "\" " ) ;
369
- var quoteIndex2 = match . Slice ( quoteIndex1 + 1 ) . IndexOf ( "\" " ) ;
370
-
371
- var packageName = match . Slice ( quoteIndex1 + 1 , quoteIndex2 ) . ToString ( ) . ToLowerInvariant ( ) ;
372
- if ( ! alreadyDownloadedPackages . Contains ( packageName ) )
376
+ var packageName = GetGroup ( line , valueMatch , "Include" ) ;
377
+ if ( ! string . IsNullOrEmpty ( packageName ) && ! alreadyDownloadedPackages . Contains ( packageName ) )
373
378
{
374
379
notYetDownloadedPackages . Add ( packageName ) ;
375
380
}
@@ -379,7 +384,6 @@ private void DownloadMissingPackages(IEnumerable<string> restoreTargets)
379
384
catch ( Exception ex )
380
385
{
381
386
progressMonitor . FailedToReadFile ( file , ex ) ;
382
- continue ;
383
387
}
384
388
}
385
389
0 commit comments