【问题标题】:How to run a F# script in the context of C# Application如何在 C# 应用程序的上下文中运行 F# 脚本
【发布时间】:2011-07-28 13:13:34
【问题描述】:

是否可以轻松地从 C# 应用程序(主机)的内部(和上下文中)运行 F# 脚本。

“在上下文中”我的意思是以下应该是正确的:

  • 没有用于执行脚本的单独进程
  • 从 F# 脚本访问宿主应用程序的静态内容(类、属性、方法)

基本上我正在寻找类似于这个假设的 API 调用的 API

FSharpScriptRunner.RunInContext(string script);

请帮忙。

-马蒂亚斯

【问题讨论】:

  • 您可以这样做,但请记住 F# 不是脚本语言,而是静态类型的编译语言。您提到的用例更适合基于 DLR 的语言,如 IronJS、IronPython 等

标签: c# f# f#-scripting


【解决方案1】:

目前还没有这样的 api,但您可以通过几个步骤轻松地完成类似的操作:-

1) 使用 powerpack 中可用的 F# CodeDom (FSharp.Compiler.CodeDom.dll) 来动态编译您的脚本。电源包包含用于编译单个文件并允许您添加对当前应用程序的引用的 api,从而使脚本可以访问宿主应用程序的类、属性和方法。

2) 在编译阶段结束时,您应该在内存中有一个动态程序集。然后,您可以使用反射从脚本中创建对象的动态实例并执行它。

【讨论】:

    【解决方案2】:

    为什么不直接将 F# 代码编译成程序集,然后从 C# 应用程序中引用它?

    【讨论】:

    • 应在应用程序内输入和编辑 F# 代码
    猜你喜欢
    • 2019-03-26
    • 1970-01-01
    • 2012-05-15
    • 2012-02-21
    • 2018-04-07
    • 1970-01-01
    • 2011-03-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多