11// Licensed to the .NET Foundation under one or more agreements.
22// The .NET Foundation licenses this file to you under the MIT license.
33
4+ using System . Linq ;
45using Microsoft . Web . LibraryManager . Contracts ;
56using Microsoft . Web . LibraryManager . LibraryNaming ;
67
@@ -33,7 +34,8 @@ public ILibraryInstallationState ConvertToLibraryInstallationState(LibraryInstal
3334 IsUsingDefaultProvider = string . IsNullOrEmpty ( stateOnDisk . ProviderId ) ,
3435 ProviderId = provider ,
3536 DestinationPath = destination ,
36- Files = stateOnDisk . Files
37+ Files = stateOnDisk . Files ,
38+ FileMappings = stateOnDisk . FileMappings . Select ( f => new Contracts . FileMapping { Destination = f . Destination , Root = f . Root , Files = f . Files } ) . ToList ( ) ,
3739 } ;
3840
3941 ( state . Name , state . Version ) = LibraryIdToNameAndVersionConverter . Instance . GetLibraryNameAndVersion ( stateOnDisk . LibraryId , provider ) ;
@@ -49,13 +51,22 @@ public LibraryInstallationStateOnDisk ConvertToLibraryInstallationStateOnDisk(IL
4951 }
5052
5153 string provider = string . IsNullOrEmpty ( state . ProviderId ) ? _defaultProvider : state . ProviderId ;
52- return new LibraryInstallationStateOnDisk ( )
54+ var serializeState = new LibraryInstallationStateOnDisk ( )
5355 {
5456 ProviderId = state . IsUsingDefaultProvider ? null : state . ProviderId ,
5557 DestinationPath = state . IsUsingDefaultDestination ? null : state . DestinationPath ,
5658 Files = state . Files ,
57- LibraryId = LibraryIdToNameAndVersionConverter . Instance . GetLibraryId ( state . Name , state . Version , provider )
59+ LibraryId = LibraryIdToNameAndVersionConverter . Instance . GetLibraryId ( state . Name , state . Version , provider ) ,
60+ FileMappings = state . FileMappings ? . Select ( f => new FileMapping { Destination = f . Destination , Root = f . Root , Files = f . Files } ) . ToList ( ) ,
5861 } ;
62+
63+ if ( serializeState is { FileMappings : { Count : 0 } } )
64+ {
65+ // if FileMappings is empty, omit it from serialization
66+ serializeState . FileMappings = null ;
67+ }
68+
69+ return serializeState ;
5970 }
6071 }
6172}
0 commit comments