.net - 如何知道 .fsx 脚本是由 .NETCore/.NET5 还是由遗留框架运行的?

我的 .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/

相关文章:

visual-studio - VS 2019 - 安装在 Mac 上的 Xamarin.iOS S

c# - .NET 6 服务注册适用于具体类,但无法使用接口(interface)

jquery - 在提交 HTML 表单后延迟 Bootstrap 模式隐藏

spring-boot - 使用 wicket 和 spring-boot 的浏览器拒绝样式表

css - 我如何使用flexbox使两个元素一个中心一个底部

scala - 由于 Avro Mapred 依赖性,Spark 构建失败

javascript - 条件满足后私有(private)路由不重定向

python-3.x - 使用其中的值列表创建单独的字典

rust - 在这种情况下如何决定生命周期注解?

html - 我可以在所有元素上使用内容可见性吗?