在C#中嵌入boo,不识别正在执行的程序集

脚本/ 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错误,所以你想确保敌人类型是公开的(或另一个)。


我不知道Boo或C#,但是我发现有人在Boo Programming Google Group上提出类似的问题。 他们问的问题是:

“命名空间Pathfinding'找不到,也许你忘了添加程序集引用?”

特别是他们得到这个错误:

我将一些现有的代码从C#转换为Boo。 我的一个类有一个“使用Pathfinding”,它被脚本转换器转换为“import Pathfinding”。

尝试编译时出现此错误:

Assets / Script / VehicleController.boo(4,8):BCE0021:Namespace'Pathfinding'找不到,可能您忘记添加程序集引用了?

我正在使用的Pathfinding库是用C#编写的。 这会导致问题吗? 有什么额外的我需要做的,以使这项工作?

这看起来像是你的错误信息,而有人提到的解决方案是你需要提前将你的脚本放到编译阶段,以确保它们可以用其他语言编写的脚本访问。

该URL被引用为脚本编译更多信息的参考资料。

链接地址: http://www.djcxy.com/p/67479.html

上一篇: Embedding boo in C#, does not recognise executing assembly

下一篇: Trying to use a generic with Entity Framework