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#.