【问题标题】:How to build an F# project via a .fsproj file?如何通过 .fsproj 文件构建 F# 项目?
【发布时间】:2018-08-28 15:11:03
【问题描述】:

到目前为止,我有一个 F# 文件,通过

fsc --standalone Foo.fs

到一个可执行文件中,我可以将其分发给尚未安装 F# 工具链的其他人。

现在我想我会转移到一个 .fsproj 文件,当我添加到项目中的文件越多,它的扩展性就越好。考虑以下 .fsproj 文件:

<?xml version="1.0" encoding="utf-8"?>
<Project Sdk="FSharp.NET.Sdk;Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp2.1</TargetFramework>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="FSharp.NET.Sdk" Version="1.0.*" PrivateAssets="All" />
    <PackageReference Include="FSharp.Core" Version="4.5.*" />
    <Compile Include="Foo.fsx" />
  </ItemGroup>
</Project>

如果我在包含这两个文件的目录中运行 dotnet build,则会得到以下输出:

C:\Users\BillGates\.nuget\packages\fsharp.net.sdk\1.0.5\build\FSharp.NET.Core.Sdk.targets(170,9): error MSB6006: "dotnet.exe" exited with code -2147450730. [C:\temp\Foo.fsproj]

搜索错误代码-2147450730 对我没有帮助。知道我的设置有什么问题吗?任何提示如何从 F# 文件构建独立的可执行文件?

我正在使用以下 .NET 版本:

dotnet --info
.NET Core SDK (reflecting any global.json):
 Version:   2.1.401
 Commit:    91b1c13032

Runtime Environment:
 OS Name:     Windows
 OS Version:  10.0.15063
 OS Platform: Windows
 RID:         win10-x64
 Base Path:   C:\Program Files\dotnet\sdk\2.1.401\

Host (useful for support):
  Version: 2.1.3
  Commit:  124038c13e

.NET Core SDKs installed:
  2.1.401 [C:\Program Files\dotnet\sdk]

.NET Core runtimes installed:
  Microsoft.AspNetCore.All 2.1.3 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.App 2.1.3 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.NETCore.App 2.1.3 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]

To install additional .NET Core runtimes or SDKs:
  https://aka.ms/dotnet-download

【问题讨论】:

  • 我不知道.Net Core项目系统的来龙去脉,所以我通常依赖github.com/TheAngryByrd/MiniScaffold之类的模板。 (运行dotnet new -i MiniScaffold,然后运行dotnet new mini-scaffold -lang F# -n ProjectName -o path\to\where\you\want\ProjectName)。它为库而不是 exe 设置了一个 .fsproj 文件,因此它可能不是您要查找的内容,但为 F# 搜索其他 dotnet 模板可能会有所帮助。
  • 另外,错误代码 -2147450730 是十六进制的0x80008096。谷歌搜索dotnet error code 0x80008096 出现blogs.msdn.microsoft.com/webdev/2018/05/30/…,其中有人提到在迁移到不同的.Net Core 版本时会出现该错误代码。您正在运行哪个版本,最近是否更改了 .Net Core 版本?
  • dotnet --info 的输出表明我使用的是 2.1 版,应该没问题。
  • 不确定这是否是故意的,但在您的 fsproj 中您已指定 Foo.fsx 而之前您说的是 Foo.fs

标签: f#


【解决方案1】:

不要将FSharp.NET.Sdk 与任何最近的工具一起使用。只要盒子里没有 F#,它就是一个中间包。现在 F# 在框中,下面应该给你一个工作版本:

dotnet new -lang f# dotnet build

【讨论】:

    猜你喜欢
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-25
    • 1970-01-01
    • 1970-01-01
    • 2017-11-03
    相关资源
    最近更新 更多