Как ссылаться на Dll в F # интерактив в Visual Studio 2017 для приложения .Net core 2.1? - PullRequest
0 голосов
/ 16 сентября 2018

Я создал консольное приложение .Net core 2.1 F # в Visual Studio 2017 для Windows.Я бы попробовал код в F # Интерактивном окне.Однако щелчок правой кнопкой мыши по Dependencies не покажет команду отправки ссылки в интерактивное окно F #.Развернув дерево NuGet, можно найти имена файлов DLL, но у них нет полного пути, поэтому я не могу вручную запустить #r ".../full path/Akka.FSharp.dll";;.

  1. Где найти файлы DLL?
  2. Можно ли добавить основную DLL-библиотеку .Net?

Код тестирования .Netосновное приложение.

open System
open Akka.FSharp

let system = System.create "MovieStreamingActorSystem" <| Configuration.load ()

type ProcessorMessage = ProcessJob of int * int * string

let processor (mailbox: Actor<ProcessorMessage>) =
    let rec loop () = actor {
        let! m = mailbox.Receive ()
        printfn "Message %A" m
        return! loop ()
    }
    loop ()

[<EntryPoint>]
let main argv =
    let processorRef = spawn system "processor" processor
    processorRef <! ProcessJob(1, 2, "3")
    0 

1 Ответ

0 голосов
/ 18 сентября 2018

Вы не можете сделать это в настоящее время, так как F # Interactive не поддерживает ядро ​​.net. ? Однако, поскольку поверхность API практически идентична .net 4.7, и вы можете получить необходимые пакеты, просто ссылаясь на нее, просто получите все необходимые библиотеки dll и используйте #r:

#if INTERACTIVE
#r "System.IO.Compression.FileSystem.dll"
#endif

Например, это позволит вам использовать некоторые методы расширения для zip-архивов, извлекая DLL-файл сжатия из .net.

Основные библиотеки .net будут упакованы в папку publish, если вы решите создать pacakage, независимый от фреймворка. Какие бы полные фреймворки не использовались для интерактивной работы с fsharp, просто перетащите их прямо в другой проект.

Кстати, если вам интересно, где лежат пакеты с ядром .net, он находится в: C:\Users\$USERNAME\.nuget\packages. Вы должны найти версии net45 и netstandard2, когда они поддерживаются.

Обновление : в предварительном просмотре VS2019 F # Interactive - это dotnetcore, и есть возможность ссылаться на dotnetstandard dll.

...