@@ -25,7 +25,8 @@ internal static IToolchain GetToolchain(this BenchmarkCase benchmarkCase)
2525 : GetToolchain (
2626 benchmarkCase . GetRuntime ( ) ,
2727 benchmarkCase . Descriptor ,
28- benchmarkCase . Job . HasDynamicBuildCharacteristic ( )
28+ benchmarkCase . Job . HasDynamicBuildCharacteristic ( ) ,
29+ benchmarkCase . Job . Environment . HasValue ( EnvironmentMode . RuntimeCharacteristic )
2930 ) ;
3031
3132 internal static IToolchain GetToolchain ( this Job job )
@@ -34,20 +35,26 @@ internal static IToolchain GetToolchain(this Job job)
3435 : GetToolchain (
3536 job . ResolveValue ( EnvironmentMode . RuntimeCharacteristic , EnvironmentResolver . Instance ) ,
3637 null ,
37- job . HasDynamicBuildCharacteristic ( )
38+ job . HasDynamicBuildCharacteristic ( ) ,
39+ job . Environment . HasValue ( EnvironmentMode . RuntimeCharacteristic )
3840 ) ;
3941
40- internal static IToolchain GetToolchain ( this Runtime runtime , Descriptor ? descriptor = null , bool preferMsBuildToolchains = false )
42+ internal static IToolchain GetToolchain ( this Runtime runtime , Descriptor ? descriptor = null , bool preferMsBuildToolchains = false , bool isRuntimeExplicit = false )
4143 {
4244 switch ( runtime )
4345 {
4446 case ClrRuntime clrRuntime :
45- if ( ! preferMsBuildToolchains && RuntimeInformation . IsFullFramework
46- && RuntimeInformation . GetCurrentRuntime ( ) . MsBuildMoniker == runtime . MsBuildMoniker )
47+ bool ShouldUseCurrentRuntime ( )
4748 {
48- return RoslynToolchain . Instance ;
49+ var assembly = isRuntimeExplicit
50+ ? descriptor ? . WorkloadMethod . DeclaringType . Assembly
51+ : null ;
52+ return runtime . MsBuildMoniker == ClrRuntime . GetTargetOrCurrentVersion ( assembly ) . MsBuildMoniker ;
4953 }
5054
55+ if ( ! preferMsBuildToolchains && RuntimeInformation . IsFullFramework && ShouldUseCurrentRuntime ( ) )
56+ return RoslynToolchain . Instance ;
57+
5158 return clrRuntime . RuntimeMoniker != RuntimeMoniker . NotRecognized
5259 ? GetToolchain ( clrRuntime . RuntimeMoniker )
5360 : CsProjClassicNetToolchain . From ( clrRuntime . MsBuildMoniker ) ;
0 commit comments