脚本/ai/Dream.boo
import CultLib
import LonelyHero
class Dream(Enemy):
pass
C#
var bc = new BooCompiler();
bc.Parameters.Input.Add(new FileInput("rsc/script/ai/" + "Dream" + ".boo"));
bc.Parameters.Pipeline = new CompileToMemory();
bc.Parameters.References.Add(Assembly.GetExecutingAssembly());
bc.Parameters.References.Add(Assembly.LoadFile(new DirectoryInfo("CultLib.dll").FullName));
bc.Parameters.References.Add(Assembly.LoadFile(new DirectoryInfo("sfmlnet-audio-2.dll").FullName));
bc.Parameters.References.Add(Assembly.LoadFile(new DirectoryInfo("sfmlnet-graphics-2.dll").FullName));
bc.Parameters.References.Add(Assembly.LoadFile(new DirectoryInfo("sfmlnet-window-2.dll").FullName));
var cc = bc.Run();
if(cc.GeneratedAssembly!=null)
{
cc.GeneratedAssembly.CreateInstance("Dream", true, BindingFlags.NonPublic, null,
new object[] {Parent, pos}, null, null);
}
else
{
foreach (var error in cc.Errors)
Console.WriteLine(error);
}
在
bc.Parameters.References.Add(Assembly.GetExecutingAssembly());
行中,我添加了执行程序集,其中包含命名空间“LonelyHero”。然而,错误
rsc/script/ai/Dream.boo(2, 8): BCE0021: 未找到命名空间 LonelyHero。也许您忘记添加程序集引用?
出现。
LonelyHero 应该存在,为什么会出现此错误以及我该如何解决它?
注意: 将
Assembly.GetExecutingAssmebly()
替换为 Assembly.GetAssembly(typeof(Enemy))
,从而确保它在 LonelyHero 命名空间下添加带有类的程序集时,会发生相同的错误。还有Assembly.LoadFile(new DirectoryInfo("LonelyHero.exe").FullName)
出现在 Boo 0.9.4.9 和 booxw-1203 中
BOO中导入的命名空间需要至少包含一种公共类型才能导入成功;否则你会得到
BCE0021
错误,所以你要确保 Enemy 类型是公共的(或其他类型)。
我不懂 Boo 或 C#,但我发现有人在 Boo 编程 Google 群组上问了类似的问题。他们问的问题:
“未找到命名空间‘Pathfinding’,也许您忘记添加程序集引用?”
具体来说,他们遇到了这个错误:
我正在将一些现有代码从 C# 转换为 Boo。我的一个 类有一个“使用寻路”,它被转换为“导入 通过脚本转换器进行寻路。
尝试编译时出现此错误:
资产/脚本/VehicleController.boo(4,8): BCE0021: 命名空间 找不到“寻路”,也许您忘记添加程序集 参考?
我使用的 Pathfinding 库是用 C# 编写的。这是否会导致 问题?我需要做任何额外的事情才能完成这项工作吗?
这看起来像是您的错误消息,有人提到的解决方案是您需要提前将脚本放入编译阶段,以确保可以从用其他语言编写的脚本访问它们。
此 URL 被引用为参考/来源,以获取有关脚本编译的更多信息。