在學習Lua熱更新的時候,遇到了一個很小的問題,但出錯緣由卻很容易被忽略,從而浪費許多沒必要要的時間。學習
在開始學習Lua的時候,我先是創建了一個項目,名稱爲LuaInterface(這個名稱就是出錯的罪魁禍首,由於VS會自動建立一個名稱爲LuaInterface的命名空間), 而後我再裏面寫了以下內容: ui
using System;
using LuaInterface;
namespace LuaInterface
{
public class Program
{
public Program()
{
}
static void Main(string[] args)
{
Lua luaw = new Lua();
//執行lua腳本
luaw.DoFile("Script.lua");
}
public static void staticMethod(int i, double d)
{
Console.WriteLine("靜態方法");
}
public void CLRMethod()
{
Console.WriteLine("非靜態方法");
}
}
public class MyClass
{
public MyClass()
{
}
}
}
複製代碼
而後我又寫了Script.lua腳本 lua
--require "luanet"
--加載CLR的類型
luanet.load_assembly("LuaInterface")
Program = luanet.import_type("LuaInterface.Program")
--實例化CLR對象
program = Program()
program:CLRMethod()
複製代碼
而後ctrl+f5運行程序,卻報以下錯誤。 spa
通過查找發現是命名空間衝突致使,Lua與C#交互須要用到LuaInterface.dll,而此處又定義了LuaInterface命名空間,形成衝突。 code
這裏須要將LuaInterface命名空間間換爲其餘名稱,而後右鍵點擊項目,選擇屬性 cdn