我想通了,我无法从另一轻松地将一个脚本库:如何从Roslyn脚本文件加载引用的脚本库?
module.csx
string SomeFunction() {
return "something";
}
script.csx
ExecuteFile("module.csx");
SomeFunction() <-- causes compile error "SomeFunction" does not exist
这是因为编译器不知道模块。 csx在编译script.csx afaiu时。我可以添加另一个脚本来加载这两个文件,这将起作用。但那不是那么漂亮。
取而代之,我喜欢在我的脚本中为我的脚本检查特殊语法“加载模块”,并在实际脚本执行之前执行这些模块。
script.csx
// load "module.csx"
SomeFunction()
现在,有一些基本的字符串处理,我可以找出哪些模块加载(线包含//负荷......)和(这里要点https://gist.github.com/4147064)加载该文件:
foreach(var module in scriptModules) {
session.ExecuteFile(module);
}
return session.Execute(script)
但是 - 因为我们谈论的罗斯林,应该有解析为我找语法脚本一些不错的办法,对不对?
它甚至可能存在一种方式来处理模块库的代码?
整个事情的第一个版本:https://github.com/joeriks/RoslynWebScript – joeriks