1- // Copyright 2023  Maintainers of NUKE. 
1+ // Copyright 2024  Maintainers of NUKE. 
22// Distributed under the MIT License. 
33// https://github.com/nuke-build/nuke/blob/master/LICENSE 
44
77using  System . Linq ; 
88using  System . Runtime . Serialization . Formatters . Binary ; 
99using  JetBrains . Annotations ; 
10+ 
1011#pragma warning disable SYSLIB0011 
1112
1213namespace  Nuke . Common . Tooling ; 
@@ -17,18 +18,20 @@ public static partial class SettingsEntityExtensions
1718    public  static T  NewInstance < T > ( this  T  settingsEntity ) 
1819        where  T  :  ISettingsEntity 
1920    { 
21+         AppContext . SetSwitch ( "System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization" ,  isEnabled :  true ) ; 
22+ 
2023        var  binaryFormatter  =  new  BinaryFormatter ( ) ; 
2124
2225        using  var  memoryStream  =  new  MemoryStream ( ) ; 
2326        binaryFormatter . Serialize ( memoryStream ,  settingsEntity ) ; 
2427        memoryStream . Seek ( offset :  0 ,  loc :  SeekOrigin . Begin ) ; 
2528
26-         var  newInstance  =  ( T )   binaryFormatter . Deserialize ( memoryStream ) ; 
29+         var  newInstance  =  ( T ) binaryFormatter . Deserialize ( memoryStream ) ; 
2730        if  ( newInstance  is  ToolSettings  toolSettings ) 
2831        { 
29-             toolSettings . ProcessArgumentConfigurator  =  ( ( ToolSettings )   ( object )   settingsEntity ) . ProcessArgumentConfigurator ; 
30-             toolSettings . ProcessLogger  =  ( ( ToolSettings )   ( object )   settingsEntity ) . ProcessLogger ; 
31-             toolSettings . ProcessExitHandler  =  ( ( ToolSettings )   ( object )   settingsEntity ) . ProcessExitHandler ; 
32+             toolSettings . ProcessArgumentConfigurator  =  ( ( ToolSettings ) ( object ) settingsEntity ) . ProcessArgumentConfigurator ; 
33+             toolSettings . ProcessLogger  =  ( ( ToolSettings ) ( object ) settingsEntity ) . ProcessLogger ; 
34+             toolSettings . ProcessExitHandler  =  ( ( ToolSettings ) ( object ) settingsEntity ) . ProcessExitHandler ; 
3235        } 
3336
3437        return  newInstance ; 
0 commit comments