即使没有安装f#,也要在服务器上运行f#代码

时间:2011-08-18 06:49:01

标签: f#

是否可以在服务器上运行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#程序相同的目录中。

1 个答案:

答案 0 :(得分:8)

当然 - 只需将FSharp-Dll与项目一起复制或使用--standalone编译器选项。当然,您的服务器上需要.net(4.0 / 3.5 / 2.0,具体取决于您的F#-version)框架。

最简单的第一种方法:使用参考文献的“复制本地”设置 - Dll将放在bin文件夹中的.exe / .dll旁边(或者你输出的时候): enter image description here