0

我正在尝试在我的 C# 软件的线程中嵌入运行的 NLua 控制台脚本。我的代码从控制台读取这些行并附加这些行,直到读取“:quit”。然后它执行脚本。然后我捕获任何异常并将其打印到控制台。这是一个例子:

x=4
:quit
print(4)
:quit
4
print(math.sin(x))
:quit
-0.75680249530793
import ('Microsoft.Xna.Framework')
:quit
[string "chunk"]:1: attempt to call global 'import' (a nil value)

看来我的 import 语句有问题。这是 C# 代码:

public void Run()
{
    NLua.Lua lua = new Lua();
    lua["Map"] = map;
    lua.LoadCLRPackage();
    lua.DoString(@"
import ('Game1', 'Game1') 
import ('System.Web')
import ('Microsoft.Xna.Framework;')");


    Quit = false;
    StringBuilder stream = new StringBuilder();
    string line;

    while(!Quit)
    {
        line = Console.ReadLine();
        while (line != ":quit")
        {
            Thread.Sleep(1000);
            stream.AppendLine(line);
            line = Console.ReadLine();
        }


        lock (mutex)
        {
            try
            {
                state.DoString(stream.ToString());
                stream.Clear();
            }

            catch (NLua.Exceptions.LuaException e)
            {
                Console.WriteLine(e.Message);
            }
        }
    }
}

我使用 Visual Studio 2017,为 NuGet 包管理器安装了 NLua。任何人都知道为什么我不能使用 import 语句?

4

0 回答 0