Как запустить скрипт F# в контексте приложения C#

легко ли запустить скрипт F# изнутри (и в контексте) приложения C# (хоста).

С 'в контексте' я имею в виду следующее должно быть истинным:

  • нет отдельного процесса для выполнения скрипта
  • доступ из скрипта F# к статическому содержимому хост-приложения (классы, свойства, методы)

в основном я ищу API, похожий на этот гипотетический API звоните

FSharpScriptRunner.RunInContext(string script);

пожалуйста, помогите.

-Маттиас

2 ответов


в настоящее время нет такого API, но вы можете довольно легко сделать что-то подобное в пару шагов:-

1) Используйте F# CodeDom, (FSharp.Компилятор.граф CodeDOM.dll) доступна в powerpack, для динамической компиляции вашего скрипта. Пакет питания содержит API для компиляции одного файла и позволяет добавлять ссылки на текущее приложение, предоставляя скрипту доступ к классам, свойствам и методам ведущего приложения.

2) В конце этап компиляции вы должны иметь динамическую сборку в памяти. Затем с помощью отражения можно создать динамический экземпляр объекта из сценария и выполнить его.


Почему бы вам просто не скомпилировать код F# в сборку, а затем ссылаться на это из вашего приложения c#?