是否可以在服务器上运行f#代码(如果没有安装)(共享服务器)?我的意思是也许我可以上传并引用所有必要的组件? f# download place包含“其他cli实现”的zip - 可能有人有类似问题吗?
编辑更多上下文:实际上我正在使用c#来编译和运行f#程序。所以我打电话给
using (CodeDomProvider provider = new Microsoft.FSharp.Compiler.CodeDom.FSharpCodeProvider())
{
cr = provider.CompileAssemblyFromSource(cp, new string[] { data.Program });
}
现在在我的机器上一切都很好。我已经包含了FSharp.Core.dll(版本4)以及FSharp.Compiler.CodeDom(版本2)。一切都在本地复制。在服务器上我收到此错误:
Could not load file or assembly 'FSharp.Core, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
at Microsoft.FSharp.Compiler.CodeDom.FSharpCodeProvider.CreateCompiler()
at System.CodeDom.Compiler.CodeDomProvider.CreateCompilerHelper()
at System.CodeDom.Compiler.CodeDomProvider.CompileAssemblyFromSource(CompilerParameters options, String[] sources)...
EDIT2: 所以实际上我想在没有安装f#的服务器上编译 f#代码。以下是我必须做的事情:
1. put FSharp.Compiler.CodeDom.dll (version 2 as there is now newer now) and FSharp.Core.dll version 2 in bin directory.
2. create new directory in bin directory and put there this:
-FSharp.Compiler.dll (version 4)
-FSharp.Core (.dll, .xml, .sigdata, .optdata) (version 4)
-Fsc.exe - f# compiler
3. From code set process' FSHARP_BIN environment variable to point to above directory:
System.Environment.SetEnvironmentVariable("FSHARP_BIN", Utils.RootFolder + @"bin\comilersstuff");
这种方式编译成功,如果你想运行它,你必须将Fsharp.Core.dll(v.4)放在与编译的F#程序相同的目录中。
答案 0 :(得分:8)
当然 - 只需将FSharp-Dll与项目一起复制或使用--standalone编译器选项。当然,您的服务器上需要.net(4.0 / 3.5 / 2.0,具体取决于您的F#-version)框架。
最简单的第一种方法:使用参考文献的“复制本地”设置 - Dll将放在bin文件夹中的.exe / .dll旁边(或者你输出的时候):