@@ -805,6 +805,43 @@ public void It_runs_single_file_apps(string targetFramework, bool selfContained,
805
805
. HaveStdOutContaining ( "Hello World" ) ;
806
806
}
807
807
808
+ [ Theory ]
809
+ [ InlineData ( null ) ]
810
+ [ InlineData ( true ) ]
811
+ [ InlineData ( false ) ]
812
+ public void It_can_disable_cetcompat ( bool ? cetCompat )
813
+ {
814
+ string rid = "win-x64" ; // CET compat support is currently only on Windows x64
815
+ var testProject = new TestProject ( )
816
+ {
817
+ Name = "CetCompat" ,
818
+ TargetFrameworks = ToolsetInfo . CurrentTargetFramework ,
819
+ RuntimeIdentifier = rid ,
820
+ IsExe = true ,
821
+ } ;
822
+ if ( cetCompat . HasValue )
823
+ {
824
+ testProject . AdditionalProperties . Add ( "CetCompat" , cetCompat . ToString ( ) ) ;
825
+ }
826
+
827
+ var testAsset = _testAssetsManager . CreateTestProject ( testProject , identifier : cetCompat . HasValue ? cetCompat . Value . ToString ( ) : "default" ) ;
828
+ var publishCommand = new PublishCommand ( testAsset ) ;
829
+ publishCommand . Execute ( PublishSingleFile )
830
+ . Should ( )
831
+ . Pass ( ) ;
832
+
833
+ DirectoryInfo publishDir = publishCommand . GetOutputDirectory (
834
+ targetFramework : testProject . TargetFrameworks ,
835
+ runtimeIdentifier : rid ) ;
836
+ string singleFilePath = Path . Combine ( publishDir . FullName , $ "{ testProject . Name } .exe") ;
837
+ bool isCetCompatible = PeReaderUtils . IsCetCompatible ( singleFilePath ) ;
838
+
839
+ // CetCompat not set : enabled
840
+ // CetCompat = true : enabled
841
+ // CetCompat = false : disabled
842
+ isCetCompatible . Should ( ) . Be ( ! cetCompat . HasValue || cetCompat . Value ) ;
843
+ }
844
+
808
845
[ RequiresMSBuildVersionTheory ( "16.8.0" ) ]
809
846
[ InlineData ( false ) ]
810
847
[ InlineData ( true ) ]
0 commit comments