Mis scripts .fsx son un poco antiguos, por lo que solo funcionan con .NET4.x, lo que significa que necesito ejecutarlos con el comando fsharpi
en macOS.
Ahora estoy pensando en empezar a migrarlos a dotnet fsi
; sin embargo, idealmente puedo encontrar una manera de ejecutarlos en ambos sentidos durante un tiempo, en un período de transición.
Así que esperaba que, dentro de ellos, pudiera hacer algún tipo de código condicional como este:
#if NET5_0 System.Console.WriteLine "we're running in dotnet fsi, yay" #else System.Console.WriteLine "we're running with fsharpi, legacy" #endif
Pero no funciona, sorprendentemente (y digo sorprendentemente porque la definición NET5_0
se menciona en muchas páginas de documentación). ¿Alguna otra idea de cómo podría detectar esto?
Creo que System.Environment.Version
le dará la información que necesita:
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"
Parece que NET5_0
solo está definido para C#.