gpt4 book ai didi

c# - LuaInterface - 如何从任何路径加载程序集?

转载 作者:太空宇宙 更新时间:2023-11-03 16:21:15 24 4
gpt4 key购买 nike

我正在尝试使用 LuaInterface 加载 .net 程序集。如果我将程序集放在与我的可执行文件(以及我的 LuaInterface.dll 和 LuaNet.dll)相同的文件夹中,那么一切都很好。我想将程序集移动到不同的文件夹中,但是当我尝试这样做时,我得到“用户代码中出现 .NET 异常”。我试过:

package.path = package.path .. "C:\\path\\to\\my\\assembly\\?.dll"
luanet.load_assembly("MyAssembly")

luanet.load_assembly("C:\\path\\to\\my\\assembly\\MyAssembly")

luanet.load_assembly("C:\\path\\to\\my\\assembly\\MyAssembly.dll")

所有这些都返回 .NET 异常错误。有没有办法定义 LuaInterface 使用的路径?

最佳答案

您的程序集是由您的“托管”可执行文件加载的,而不是真正由 Lua 环境本身加载的。 luanet.load_assembly("MyAssembly") 只是让 Lua 环境可以访问程序集。例如(C#):

using MyAssembly; //you can't compile unless MyAssembly is available

namespace LuaRunner
{
class LuaRunner
{
void DoLua()
{
using (LuaInterface.Lua lua = new LuaInterface.Lua())
{
lua.DoString("luanet.load_assembly('MyAssembly')");
//... do what you want within Lua with MyAssembly
}
}
}
}

您的运行程序是 Lua 在其中运行的“宿主”,因此实际加载 MyAssembly 的是您的运行程序。您的可执行文件需要对 MyAssembly.dll 的引用(并且需要能够在运行时在通常位置找到它)。

关于c# - LuaInterface - 如何从任何路径加载程序集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13806936/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com