我的 .fsx 脚本有点旧,所以它们只能与 .NET4.x 一起使用,这意味着我需要在 macOS 中使用 fsharpi
命令运行它们。
现在我正在考虑开始将它们迁移到 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
)。关于如何检测到这一点的任何其他想法?
最佳答案
我认为 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# 定义的。
https://stackoverflow.com/questions/70412939/