Как узнать, запущен ли сценарий .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#.