我在MacOS上安装了ExcelProvider(运行F#4.5和mono 6.0.0.327)
indexTITLE a b c
0 0 1 2 3
现在我创建了一个空目录,并创建了一个名为Foo.fs的文件,并编写了此代码
nuget install ExcelProvider
在同一目录中创建一个名为DataTypeTest.xlsx的Excel文件,创建2列Test1和Test2并在其下方添加一些数据
使用
编译open FSharp.Interop.Excel
type DataTypeTest = ExcelFile<"DataTypeTest.xlsx">
let file = new DataTypeTest()
let row = file.Data |> Seq.head
printfn "This is column 1 %s" row.Test1
printfn "This is column 2 %s" row.Test2
这样编译正常,我得到了Foo.exe
现在,我要使Mono能够找到我的Excel Provider Dll。我创建了一个名为Foo.exe.config的配置文件,并复制了以下内容
fsharpc -r:/Users/foo/ExcelProvider.1.0.1/lib/netstandard2.0/ExcelProvider.Runtime.dll -o:Foo.exe Excel.fs
但是当我使用<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<providing privatePath="/Users/srabh/ExcelProvider.1.0.1/lib/netstandard2.0" />
</assemblyBinding>
</runtime>
</configuration>
运行代码时,仍然找不到
mono ./Foo.exe
答案 0 :(得分:0)
您需要在配置文件中添加probing privatePath
,并在应用程序的目录或子目录中包含dll。请参阅:Configure Apps。
实际上最好不要直接使用编译器或msbuild,因为您会很快遇到问题(如您所注意到的)。而是请使用Rider / VS Code / VS(它们均在Mac上运行)。它将简化软件包管理以及构建和维护项目。如果选择将ionide扩展安装到VSCode中。