あるスクリプトライブラリを別のスクリプトライブラリから簡単にロードできないことがわかりました。
module.csx
string SomeFunction() {
return "something";
}
script.csx
ExecuteFile("module.csx");
SomeFunction() <-- causes compile error "SomeFunction" does not exist
これは、コンパイラがscript.csxafaiuをコンパイルするときにmodule.csxを認識していないためです。別のスクリプトを追加して、その1つから2つのファイルをロードすると、それが機能します。しかし、それはそれほどきれいではありません。
代わりに、scripthostにスクリプト内の特別な構文「loadmodule」をチェックさせ、実際のスクリプトを実行する前にそれらのモジュールを実行するのが好きです。
script.csx
// load "module.csx"
SomeFunction()
これで、いくつかの基本的な文字列処理を使用して、ロードするモジュール(// load ...を含む行)とそのファイルをロードする(ここで要点https://gist.github.com/4147064)を把握できます。
foreach(var module in scriptModules) {
session.ExecuteFile(module);
}
return session.Execute(script)
しかし、Roslynについて話しているので、私が探している構文のスクリプトを解析するための優れた方法があるはずですよね?
そして、それはコードのモジュールライブラリを処理する方法さえ存在するかもしれませんか?