Как узнать, запущен ли сценарий .fsx .NETCore/.NET5 или устаревшей структурой?

Мои сценарии .fsx устарели, поэтому они работают только с .NET4.x, а это значит, что мне нужно запускать их с fsharpi команда в macOS.

Сейчас подумываю начать переносить их на dotnet fsi; однако в идеале я могу найти способ запустить их обоими способами на какое-то время, в переходный период.

Итак, я надеялся, что внутри них я смогу сделать какой-то условный код вроде этого:

      #if NET5_0
System.Console.WriteLine "we're running in dotnet fsi, yay"
#else
System.Console.WriteLine "we're running with fsharpi, legacy"
#endif

Но на удивление это не работает (и я говорю «удивительно, потому что определение NET5_0упоминается на многих страницах документации. Есть еще какие-нибудь идеи о том, как я мог это обнаружить?

1 ответ

Я думаю System.Environment.Versionпредоставит вам необходимую информацию:

      if System.Environment.Version.Major >= 5 then
    System.Console.WriteLine "we're running in dotnet fsi, yay"
else
    System.Console.WriteLine "we're running with fsharpi, legacy"

Это выглядит как NET5_0определен только для C#.

Другие вопросы по тегам