脚本/ 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
中答案 0 :(得分:3)
BOO中导入的命名空间需要包含至少一个公共类型才能使导入成功;否则你会得到BCE0021
错误,所以你想确保Enemy类型是公共的(或另一个)。
答案 1 :(得分:1)
我不知道Boo或C#,但我发现有人在Boo Programming Google Group上提出了类似的问题。他们问的问题是:
"Namespace 'Pathfinding' not found, maybe you forgot to add an assembly reference?"
具体来说,他们收到了这个错误:
我正在将我从C#中获得的一些现有代码转换为Boo。我的一个 类有一个“使用Pathfinding”,它被转换为“import” 寻路“由脚本转换器。
尝试编译时出现此错误:
Assets / Script / VehicleController.boo(4,8):BCE0021:命名空间 找不到'寻路',也许你忘了添加装配 参考?
我正在使用的Pathfinding库是用C#编写的。这可能是因为 问题?我需要做些什么来使这项工作吗?
这看起来像是您的错误消息,有人提到的解决方案是您需要先将脚本放入编译阶段,以确保可以从其他语言编写的脚本中访问它们。
此URL was cited as a reference/source有关脚本编译的更多信息。