zorientowali się, że nie można załadować jedną bibliotekę skryptu z innego łatwo:Jak załadować przywoływane biblioteki skryptów z pliku skryptu Roslyn?
module.csx
string SomeFunction() {
return "something";
}
script.csx
ExecuteFile("module.csx");
SomeFunction() <-- causes compile error "SomeFunction" does not exist
To dlatego, że kompilator nie wie modułu. csx w czasie kompilacji script.csx afaiu. Mogę dodać kolejny skrypt, aby załadować dwa pliki z tego jednego, a to zadziała. Jednak to nie takie ładne.
Zamiast tego chciałbym, aby mój czek scripthost dla specjalnej składni „moduł obciążenia” w moich skryptów i wykonywać te moduły przed rzeczywistego wykonywania skryptu.
script.csx
// load "module.csx"
SomeFunction()
Teraz kilka podstawowych manipulacji ciąg, mogę dowiedzieć się, które moduły do obciążenia (linie, które zawiera ładunek // ...) i załadować że pliki (GIST tutaj https://gist.github.com/4147064) :
foreach(var module in scriptModules) {
session.ExecuteFile(module);
}
return session.Execute(script)
Ale - skoro mówimy Roslyn, to powinien być jakiś dobry sposób na przeanalizowanie skryptu pod kątem składni, której szukam, prawda?
I może nawet istnieć sposób, aby obsługiwać biblioteki modułów kodu?
Pierwsza wersja tego wszystkiego: https://github.com/joeriks/RoslynWebScript – joeriks