如何在F#源文件* .fs中使用AKKA?

问题描述

我通常可以在Visual Studio Code的.fsx文件中将AKKA actor与F#一起使用,但是当我在.fs文件中使用AKKA actor时,它将报告错误

错误FS0039:未定义名称空间或模块'Akka'。

即使我在项目中下载了dotnet add Project package Akkadotnet add Project package Akka.FSharp --version 1.4.10的AKKA软件包,并将它们包含在.fs文件中,也是如此:

module P

open System
open Akka
open Akka.Actor
open Akka.FSharp

解决方法

您肯定可以从fs文件中引用fsx个文件,因为它是快速原型制作的相当普遍的工作流程。如有必要,可以使用#if INTERACTIVE#endif编译指示来分隔已编译和fsx代码部分。

这进入Library.fs,项目引用并下载了FileHelpers nuget包:

module SO201004.Library
open FileHelpers

let fname = @"C:\temp\navdb.csv"

[<CLIMutable; DelimitedRecord(",")>]
type NavDB = {
    Path: string
    Frequency: string
    LastAccess: string
}

let fHelper = FileHelperEngine<NavDB>()
let navDB = fHelper.ReadFile(fname)

现在,在Script1.fsx文件中,您可以#load上述模块,以及#r任何其他库:

#r @"C:\Users\USERNAME\.nuget\packages\filehelpers\3.4.1\lib\netstandard2.0\FileHelpers.dll"
//#r "nuget: FileHelpers"
#load "Library.fs"

open SO201004

Library.navDB

我只是打开SO201004名称空间来访问Library模块。如果我调用navDB,则会得到解析后的CSV(解析器在Library文件/模块中定义)。

{ Path = ""C:\Users\USERNAME\OneDrive\Documents\Source\WebDev\FruitsProject""
  Frequency = ""364""
  LastAccess = ""132160581961691649"" };
{ Path =
        ""C:\Users\USERNAME\OneDrive\Documents\Source\WebDev\todolist-v2-starting-files""
  Frequency = ""12""
  LastAccess = ""132161111431384871"" }|]

在预览版中,您应该可以使用我注释掉的#r nuget:指令。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...