3

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

使用项目生成器,我创建了一个名为Test. 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,但它们都不是.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>
4

2 回答 2

3

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

于 2017-11-20T16:57:34.090 回答
1

要生成 exe,您需要提供运行时标识符。您可以将其包含在fsprojwith中,
<PropertyGroup> <RuntimeIdentifiers>win10-x64</RuntimeIdentifiers> </PropertyGroup>
但您不需要这样做。您可以使用 VSCode 的tasks.json文件来设置构建任务。

我的建议只是运行 dotnet CLI:

dotnet build -c 发布 -r win10-x64

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

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

于 2017-11-20T23:34:45.003 回答