@@ -180,30 +180,38 @@ private void RemoveUnnecessaryNugetPackages(bool existsNetCoreRefNugetPackage, b
180
180
RemoveNugetPackageReference ( "microsoft.aspnetcore.app.ref" ) ;
181
181
}
182
182
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
+ } ;
191
196
192
- if ( existsNetstandardLibNugetPackage )
193
- RemoveNugetPackageReference ( "netstandard.library" ) ;
194
- }
195
- else if ( existsNetFrameworkRefNugetPackage )
197
+ for ( var i = 0 ; i < packagesInPrioOrder . Length ; i ++ )
196
198
{
197
- if ( existsNetstandardLibRefNugetPackage )
198
- RemoveNugetPackageReference ( "netstandard.library.ref" ) ;
199
+ var ( isPresent , _) = packagesInPrioOrder [ i ] ;
200
+ if ( ! isPresent )
201
+ {
202
+ continue ;
203
+ }
199
204
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 ;
207
215
}
208
216
209
217
// TODO: There could be multiple `microsoft.netframework.referenceassemblies` packages,
0 commit comments