如何在 .NET Core 项目中使用 F# 的命令行选项?

Posted

技术标签:

【中文标题】如何在 .NET Core 项目中使用 F# 的命令行选项?【英文标题】:How to use command-line options for F# within a .NET Core project? 【发布时间】:2021-04-30 04:08:29 【问题描述】:

我需要在 .NET Core 项目中的 F# 代码中使用保留字 sig 之一。正如手册所述:

如果您使用 --mlcompatibility 编译器选项,上述关键字可用作标识符

也可以通过设置项目属性来控制编译环境。对于面向 .NET Core 的项目,.fsproj 中的“其他标志”属性...用于指定额外的命令行选项。

在尝试这样做时,我成功地使我的项目崩溃了。

如何将命令行选项放入 .NET Core 项目中?

TIA。

【问题讨论】:

【参考方案1】:

在您遇到其他标志问题的部分 - 它需要进入/PropertyGroup。以下是默认 console 模板的示例:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net5.0</TargetFramework>
    <OtherFlags>$(OtherFlags) --mlcompatibility</OtherFlags>
  </PropertyGroup>

  <ItemGroup>
    <Compile Include="Program.fs" />
  </ItemGroup>

</Project>

遗憾的是,这不能解决您的主要观点 - 使用 sig 作为标识符仍然是一个错误(该选项只是删除了 警告

查看How do I compile F# code with ML compatibility?中的讨论


如果你真的想使用标识符,你可以试试这个小技巧:

let ``sig`` = "F#"
printfn "Hello world %s" ``sig``

【讨论】:

以上是关于如何在 .NET Core 项目中使用 F# 的命令行选项?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 .NET Core 3.1 中的 F# 访问 WCF 服务?

Linux下使用Docker部署.NET Core项目

如何在 ASP.NET Core 项目中读取本地文件?

将项目从 2.2 更新到 3.1(缺少程序集)或如何在 .NET Core 中使用 API POST 请求时,PostAsJsonAsync()在 .Net Core 3.1 中不起作用 [重复]

如何将 .net core Web API 项目添加到现有的 .NET core (3.1) Web Application 项目中?

如何在 .NET Core 类库中引用 Visual Studio 共享项目