【问题标题】:Roslyn Scripting罗斯林脚本
【发布时间】:2012-09-26 13:30:56
【问题描述】:

您好,我想使用 Roslyn 在我的应用程序中编写脚本。但我有新的(九月)版本,我很困惑。我想用一些简单的功能执行文件。 例如:

public int m(){
      return 6;
}

我发现了一些关于它的文章,例如acticle。有一些方法可以做到,但在我的版本中不是Session.Create() 我想像 IronPython 脚本一样使用它

类似:

var scriptEngine = new SciptEngine.ExecuteFile(fileWithFunction);
dynamic d = getFunction(m);

动态d = callFunction(m);

有可能还是我必须使用 IronPython 脚本?

【问题讨论】:

  • 我对 Roslyn 一无所知,但你可以在没有它的情况下使用 c# 作为脚本引擎。您可以使用命名空间 Microsoft.Csharp 中的类 CSharpCodeProvider 在运行时编译程序集并调用方法或从该程序集创建对象。例如,请参见此处的示例:crowsprogramming.com/archives/99
  • 感谢您的快速回答。但是:我想在我的 Mogre 游戏中使用它,我的主管告诉我尝试使用 Roslyn,因为它是用 c# 编写的 c# 编译器,所以它可以更快。我不知道是不是真的,但是如果有人知道怎么做,我可以测试一下。

标签: c# roslyn


【解决方案1】:

自撰写本文的原始 CTP 以来,API 没有发生显着变化。对于您的场景:

var scriptEngine = new ScriptEngine();
var session = scriptEngine.CreateSession();
session.AddReference("System");
session.AddReference("System.Core");
session.Execute(@"public int m() { return 6; }");

int six = session.Execute<int>("m()");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-24
    • 2016-08-17
    • 1970-01-01
    • 1970-01-01
    • 2021-08-14
    • 1970-01-01
    相关资源
    最近更新 更多