部署F#exe

部署F#exe,f#,f#-3.0,f#-data,F#,F# 3.0,F# Data,我在VS2013中建立了一个F#程序。我打算在安装了.NET framework 4.5的windows 2008 R2服务器上部署此功能。现在,当我在VisualStudio中构建程序时,它会在debug/bin目录(MyProgram.exe)中创建一个exe。我是否需要在exe中包含fharp.core.dll的副本?或者,构建过程是否会自动编译必要的依赖性DLL(fsharp.core、fsharp.data、fsharp.data.TypeProviders)?我可以在网上搜索的大多数

我在VS2013中建立了一个F#程序。我打算在安装了.NET framework 4.5的windows 2008 R2服务器上部署此功能。现在,当我在VisualStudio中构建程序时,它会在debug/bin目录(MyProgram.exe)中创建一个exe。我是否需要在exe中包含fharp.core.dll的副本?或者,构建过程是否会自动编译必要的依赖性DLL(fsharp.core、fsharp.data、fsharp.data.TypeProviders)?我可以在网上搜索的大多数研究似乎都是关于VS2010的,我目前没有使用fsc,exe


感谢您提供的帮助。

您可能需要也可能不需要将
FSharp.Core.dll
.exe
一起复制

如果服务器上已经安装了F#,您可能不需要它,但它必须是F#的正确版本

否则,F#许可证允许您将FSharp.Core.dll与您自己的二进制文件一起部署


如果您更喜欢的话,还有“官方”选项。

您可以使用编译器选项
--standalone
静态链接FSharp.Core.dll(F#runtime)和依赖它的任何引用程序集(即任何其他F#程序集)

您需要将bin/debug文件夹中的所有文件保存到部署位置。旁注F#编译为MSIL,部署一个用F#编写的.Net应用程序和一个用C#编写的应用程序并没有什么区别,这并不完全正确。F#代码使用FSharp.Core(列表、选项等)中定义的类型和函数,并且由于FSharp.Core不是BCL的一部分,因此必须确保依赖于这些类型的程序以某种方式可以使用此程序集。我将FSharp.Core.dll复制到MyProgram.exe所在的同一目录中。当它启动时,我得到一个未处理的异常错误“缺少方法Eception:Microsoft.Fsharp.Control.fsharpsync'1 Fsharp.Data.Runtime.IO.asyncReadTextAtRuntime…”它在VS2013中运行得非常好。我不明白为什么这样不行。感谢您的帮助,我无法具体说明问题所在,但由于程序集版本不匹配,这些MissingMethodException总是(IME)的。您必须确保程序探测路径中的FSharp.Core.dll版本与编译它所依据的版本相同。您可以使用来解决此问题…谢谢。通过重新复制所有bin目录文件,问题得以解决。多亏了这些废话。我该在VS F#项目中的什么地方添加这个选项呢?在project->properties->build的测试字段“other flags”中的project->options->build中似乎没有任何相关内容