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