@@ -106,10 +106,11 @@ protected override int Execute(string[] _)
106106 startupProject . AssemblyName + ".runtimeconfig.json" ) ;
107107 var projectAssetsFile = startupProject . ProjectAssetsFile ;
108108
109- if ( ! IsCurrentPlatform ( startupProject . TargetPlatformIdentifier ) )
109+ var targetPlatformIdentifier = GetTargetPlatformIdentifier ( startupProject . TargetFramework ) ;
110+ if ( ! IsCurrentPlatform ( targetPlatformIdentifier ) )
110111 {
111112 Reporter . WriteWarning (
112- Resources . UnsupportedPlatform ( startupProject . ProjectName , startupProject . TargetPlatformIdentifier ) ) ;
113+ Resources . UnsupportedPlatform ( startupProject . ProjectName , targetPlatformIdentifier ) ) ;
113114 }
114115
115116 var targetFramework = new FrameworkName ( startupProject . TargetFrameworkMoniker ! ) ;
@@ -326,28 +327,46 @@ private static bool IsCurrentPlatform(string? targetPlatformIdentifier)
326327 return true ;
327328 }
328329
329- var currentPlatformIdentifier = GetTargetPlatformIdentifier ( ) ;
330- return string . Equals ( targetPlatformIdentifier , currentPlatformIdentifier , StringComparison . OrdinalIgnoreCase ) ;
330+ if ( string . Equals ( targetPlatformIdentifier , "windows" , StringComparison . OrdinalIgnoreCase ) )
331+ {
332+ return OperatingSystem . IsWindows ( ) ;
333+ }
334+
335+ if ( string . Equals ( targetPlatformIdentifier , "linux" , StringComparison . OrdinalIgnoreCase ) )
336+ {
337+ return OperatingSystem . IsLinux ( ) ;
338+ }
339+
340+ if ( string . Equals ( targetPlatformIdentifier , "osx" , StringComparison . OrdinalIgnoreCase )
341+ || string . Equals ( targetPlatformIdentifier , "macos" , StringComparison . OrdinalIgnoreCase ) )
342+ {
343+ return OperatingSystem . IsMacOS ( ) ;
344+ }
345+
346+ return false ;
331347 }
332348
333- private static string ? GetTargetPlatformIdentifier ( )
349+ private static string ? GetTargetPlatformIdentifier ( string ? targetFramework )
334350 {
335- if ( OperatingSystem . IsWindows ( ) )
351+ if ( string . IsNullOrEmpty ( targetFramework ) )
336352 {
337- return "Windows" ;
353+ return null ;
338354 }
339355
340- if ( OperatingSystem . IsLinux ( ) )
356+ var dashIndex = targetFramework . IndexOf ( '-' ) ;
357+ if ( dashIndex < 0 || dashIndex >= targetFramework . Length - 1 )
341358 {
342- return "Linux" ;
359+ return null ;
343360 }
344361
345- if ( OperatingSystem . IsMacOS ( ) )
362+ var platformAndVersion = targetFramework [ ( dashIndex + 1 ) ..] ;
363+ var i = 0 ;
364+ while ( i < platformAndVersion . Length && ! char . IsDigit ( platformAndVersion [ i ] ) )
346365 {
347- return "macOS" ;
366+ i ++ ;
348367 }
349368
350- return null ;
369+ return i > 0 ? platformAndVersion [ .. i ] : null ;
351370 }
352371
353372 private static bool ShouldHelp ( IReadOnlyList < string > commands , IList < string > args )
0 commit comments