Ionide + Fake 将输出可执行文件放在哪里?

Where does Ionide + Fake put the output executable?

我正在尝试在 macOS High Sierra 上使用 .NET Core + Ionide + VS Code + Fake + Paket。

使用项目生成器,我创建了一个名为 Test 的 Suave 应用程序。 Ionide 似乎已经生成了相应的文件。将 TargetFramework 调整为 .NET Core 后,我可以成功构建:

$ ./build.sh
...
Build succeeded.
    0 Warning(s)
    0 Error(s)

Time Elapsed 00:00:03.72
Finished Target: Build

---------------------------------------------------------------------
Build Time Report
---------------------------------------------------------------------
Target             Duration
------             --------
Clean              00:00:00.0026904
InstallDotNetCLI   00:00:01.2292511
Restore            00:00:04.2731055
Build              00:00:07.1234434
Total:             00:00:12.7035334
---------------------------------------------------------------------
Status:            Ok
---------------------------------------------------------------------

Test/bin 中现在有一些文件,但其中 none 个是 .exe,这是我期望 fsharpc 的输出。

Ionide + Fake 将输出的可执行文件放在哪里?


我的项目有 OutputType 个可执行文件:

<?xml version="1.0" encoding="utf-8"?>
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp2.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
    <Compile Include="Test.fs" />
</ItemGroup>
<Import Project="..\.paket\Paket.Restore.targets" />
</Project>

.Net Core 将所有项目(甚至可执行应用程序)编译为 .dll 而不是 .exe 可以是 运行 和 dotnet PATH_TO_DLL。在 bin 文件夹中,在给定框架目标的子文件夹中应该有文件 YOUR_PROJECT_NAME.dll,可以是 运行 with dotnet CLI。

要生成 exe,您需要提供 run-time identifier。您可以将其包含在 fsproj
<PropertyGroup> <RuntimeIdentifiers>win10-x64</RuntimeIdentifiers> </PropertyGroup>
但你不需要那样做。您可以使用 VSCode 的 tasks.json 文件来设置构建任务。

我的建议只是 运行 dotnet CLI:

dotnet build -c Release -r win10-x64

这将在 bin\release\netcoreapp2.0\win10-x64 文件夹中创建一个 exe。如果你想部署一个独立的目录,你也可以 dotnet publish (这可能会变大)。 OSX 的 id 类似于 osx-x64.

默认情况下,ionide 会生成一个针对 net461 的 fsproj 文件,您可能还需要 fake 5 for dotnetcore。我还建议您在 magic-mode 中使用 paket,并将 .exe 提交到 github(如果您使用 git)。