Скорее всего, вы получаете эту ошибку, потому что вы не передали все исходные файлы компилятору F #, а только один файл. Чтобы сгенерировать файлы интерфейса F #, компилятору необходимо обработать весь проект, поэтому вам нужно будет вызвать fsharpc
со всеми исходными файлами, а также со ссылками на все библиотеки, от которых вы зависите. Если ваш проект является чем-то нетривиальным, это, вероятно, будет довольно сложно.
Однако вы можете указать параметр --sig
в обычном файле проекта fsproj
. Я только что проверил это, и, похоже, работает с .NET Core тоже. Вы можете сделать это, добавив параметр OtherFlags
:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp2.2</TargetFramework>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
<DefineConstants>TRACE</DefineConstants>
<PlatformTarget>AnyCPU</PlatformTarget>
<OtherFlags>--sig:test.fsi</OtherFlags>
</PropertyGroup>
<ItemGroup>
<Compile Include="Program.fs" />
</ItemGroup>
</Project>
Когда я указываю это и запускаю свой проект с использованием dotnet run
или строим его с использованием dotnet build
, он генерирует файл test.fsi
со всемиинтерфейсы. (Это для всего проекта, но я не думаю, что есть способ ограничить это интерфейсами для одного файла.)