Использование пакетов без структуры проекта F # - PullRequest
0 голосов
/ 07 февраля 2019

Можно ли просто установить пакет в моей системе, и любой файл .fs сможет ссылаться на него?Можно ли использовать пакеты F # без соблюдения структуры проекта?Все использованные мной внешние пакеты FSharp либо используют NuGet (для правильных больших проектов), либо ссылаются на загруженные dll (для сценариев F # .fsx).

Я ищуиспользовать компилятор и сгенерировать исполняемый файл.

Мой пример использования следующий:

У меня есть очень простой сценарий командной строки, который не оправдывает наличиесложная структура проекта с кучей файлов проекта, пакетов и конфигурации.Все, что мне действительно нужно, это скомпилировать один файл FSharp и создать .exe.

Теперь этот сценарий требует выполнения некоторых HTTP-запросов, получения ответа JSON и преобразования этих данных - я считаю, что FSharp.Dataидеальный инструмент для работы, но я не смог выяснить, как интегрировать его с моей проблемой.

Ответы [ 2 ]

0 голосов
/ 07 февраля 2019

Вы всегда можете вызвать компилятор напрямую для генерации вашего исполняемого файла:

Fsc.exe
"..\projects\modules\src\Calculate primes.fs"
-o:"..\projects\modules\bin\Calculate primes.exe"
--debug:full
--define:DEBUG
--define:TRACE
--target:winexe
-g
--warn:3
--warnaserror:76
--vserrors
--utf8output
--fullpaths
--flaterrors
--subsystemversion:6.00
--highentropyva+
--optimize-
--tailcalls-
-I:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1"
-I:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\Facades"

Создайте командный файл и поместите его в одну строку.Добавьте необходимые библиотеки следующим образом:

-r:"..\packages\FSharp.Data\lib\net45\FSharp.Data.dll"

После компиляции вам может понадобиться скопировать все библиотеки DLL, используемые в той же директории, что и исполняемый файл, и это поможет иметь файл <program>.exe.config.

0 голосов
/ 07 февраля 2019

Я не думаю, что есть поддерживаемый способ именно того, что вам нужно, пока это предложение языка не будет реализовано https://github.com/fsharp/fslang-design/blob/master/tooling/FST-1027-fsi-references.md

Если вам нужен только FSharp.Data и вам не нужны инструменты редактора и libмного версий, вы можете скачать .dll вручную, использовать из вашего файла (назовем его app.fs), а затем с установленными инструментами F # вы можете скомпилировать его с чем-то вроде fsc.exe -r:<path-to-FSharp.Data.dll> -o app.exe --standalone --target:exe app.fs (я не пробовал этот конкретный набор опций, но вы можете проверить fsc docs )


Система проекта не такая сложная и тяжелая, особенно, если вы можете использовать .NET Core SDK с его интерфейсом командной строки.

Если вы запустите dotnet new console -lang=F#, полный файл проекта будет выглядеть следующим образом

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

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp2.2</TargetFramework>
  </PropertyGroup>

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

</Project>

, и в зависимости от ваших инструментов вы можете просто добавить <PackageReference Include="FSharp.Data" Version="3.0.0" /> к <ItemGroup> и после того, как выdotnet publish, ваше приложение готово.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...