3

我的 .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在许多文档页面中都提到了该定义)。关于我如何检测到这一点的任何其他想法?

4

1 回答 1

2

我想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# 定义。

于 2021-12-19T18:19:47.577 回答