11using System ;
22using System . IO ;
33using System . IO . Compression ;
4+ using System . Linq ;
45using System . Net . Http ;
56using System . Threading . Tasks ;
67using Microsoft . CodeAnalysis ;
@@ -11,10 +12,11 @@ public static class SolutionExtensions
1112 ?? ( OperatingSystem . IsWindows ( ) ? Environment . ExpandEnvironmentVariables ( "%userprofile%\\ .nuget\\ packages" ) : "~/.nuget/packages" ) ;
1213
1314 private static readonly HttpClient HttpClient = new HttpClient ( ) ;
15+ private static readonly Task SetupPackages = Task . WhenAll ( PackageReference . AllDependencies . Select ( p => DownloadPackageAsync ( p . Name , p . Version ) ) ) ;
1416
1517 public static Solution AddPackageReference ( this Solution solution , ProjectId projectId , PackageReference package )
1618 {
17- DownloadPackageAsync ( package . Name , package . Version ) . GetAwaiter ( ) . GetResult ( ) ;
19+ SetupPackages . GetAwaiter ( ) . GetResult ( ) ;
1820
1921 var packagePath = Path . Combine ( NugetPackagesPath , package . Name , package . Version , package . Path ) ;
2022 foreach ( var dll in Directory . GetFiles ( packagePath , "*.dll" ) )
@@ -29,11 +31,11 @@ public static Solution AddTargetFrameworkReference(this Solution solution, Proje
2931 {
3032 return targetFramework switch
3133 {
32- TargetFramework . NetStandard2_0 => solution . AddPackageReference ( projectId , new ( "NETStandard.Library" , "2.0.3" , "build/netstandard2.0/ref/" ) ) ,
33- TargetFramework . NetStandard2_1 => solution . AddPackageReference ( projectId , new ( "NETStandard.Library.Ref" , "2.1.0" , "ref/netstandard2.1/ref/" ) ) ,
34- TargetFramework . Net6_0 => solution . AddPackageReference ( projectId , new ( "Microsoft.NETCore.App.Ref" , "6.0.25" , "ref/net6.0/" ) ) ,
35- TargetFramework . Net7_0 => solution . AddPackageReference ( projectId , new ( "Microsoft.NETCore.App.Ref" , "7.0.14" , "ref/net7.0/" ) ) ,
36- TargetFramework . Net8_0 => solution . AddPackageReference ( projectId , new ( "Microsoft.NETCore.App.Ref" , "8.0.0" , "ref/net8.0/" ) ) ,
34+ TargetFramework . NetStandard2_0 => solution . AddPackageReference ( projectId , PackageReference . NETStandard2_0 ) ,
35+ TargetFramework . NetStandard2_1 => solution . AddPackageReference ( projectId , PackageReference . NETStandard2_1 ) ,
36+ TargetFramework . Net6_0 => solution . AddPackageReference ( projectId , PackageReference . DotNet6 ) ,
37+ TargetFramework . Net7_0 => solution . AddPackageReference ( projectId , PackageReference . DotNet7 ) ,
38+ TargetFramework . Net8_0 => solution . AddPackageReference ( projectId , PackageReference . DotNet8 ) ,
3739 _ => throw new ArgumentOutOfRangeException ( nameof ( targetFramework ) , targetFramework , "Unknown target framework" ) ,
3840 } ;
3941 }
0 commit comments