@@ -180,30 +180,38 @@ private void RemoveUnnecessaryNugetPackages(bool existsNetCoreRefNugetPackage, b
180180 RemoveNugetPackageReference ( "microsoft.aspnetcore.app.ref" ) ;
181181 }
182182
183- // Multiple packages are available, we keep only one:
184- if ( existsNetCoreRefNugetPackage )
185- {
186- if ( existsNetFrameworkRefNugetPackage )
187- RemoveNugetPackageReference ( "microsoft.netframework.referenceassemblies." ) ;
188-
189- if ( existsNetstandardLibRefNugetPackage )
190- RemoveNugetPackageReference ( "netstandard.library.ref" ) ;
183+ // Multiple dotnet framework packages could be present. We keep only one.
184+ // The order of the packages is important, we're keeping the first one that is present in the nuget cache.
185+ var packagesInPrioOrder = new ( bool isPresent , string prefix ) [ ]
186+ {
187+ // net7.0, ... net5.0, netcoreapp3.1, netcoreapp3.0
188+ ( existsNetCoreRefNugetPackage , "microsoft.netcore.app.ref" ) ,
189+ // net48, ..., net20
190+ ( existsNetFrameworkRefNugetPackage , "microsoft.netframework.referenceassemblies." ) ,
191+ // netstandard2.1
192+ ( existsNetstandardLibRefNugetPackage , "netstandard.library.ref" ) ,
193+ // netstandard2.0
194+ ( existsNetstandardLibNugetPackage , "netstandard.library" )
195+ } ;
191196
192- if ( existsNetstandardLibNugetPackage )
193- RemoveNugetPackageReference ( "netstandard.library" ) ;
194- }
195- else if ( existsNetFrameworkRefNugetPackage )
197+ for ( var i = 0 ; i < packagesInPrioOrder . Length ; i ++ )
196198 {
197- if ( existsNetstandardLibRefNugetPackage )
198- RemoveNugetPackageReference ( "netstandard.library.ref" ) ;
199+ var ( isPresent , _) = packagesInPrioOrder [ i ] ;
200+ if ( ! isPresent )
201+ {
202+ continue ;
203+ }
199204
200- if ( existsNetstandardLibNugetPackage )
201- RemoveNugetPackageReference ( "netstandard.library" ) ;
202- }
203- else if ( existsNetstandardLibRefNugetPackage )
204- {
205- if ( existsNetstandardLibNugetPackage )
206- RemoveNugetPackageReference ( "netstandard.library" ) ;
205+ // Package is present, remove all the lower priority packages:
206+ for ( var j = i + 1 ; j < packagesInPrioOrder . Length ; j ++ )
207+ {
208+ var ( otherIsPresent , otherPrefix ) = packagesInPrioOrder [ j ] ;
209+ if ( otherIsPresent )
210+ {
211+ RemoveNugetPackageReference ( otherPrefix ) ;
212+ }
213+ }
214+ break ;
207215 }
208216
209217 // TODO: There could be multiple `microsoft.netframework.referenceassemblies` packages,
0 commit comments