возможно ли запускать код f # на сервере, если он там не установлен (общий сервер)? Я имею в виду, может быть, я могу загрузить и ссылаться на все необходимые сборки? f # место загрузки содержит почтовый индекс для "других реализаций Cli" - может быть, у кого-то были проблемы с симиларом?
Редактировать Больше контекста: на самом деле я использую 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 #.