標籤:添加 img net 調用 出錯 val 文檔 調試 for
Script.NET本身沒有實現呼叫指令碼庫的功能。如果將一堆已經定義好的函數放在一個指令檔裡頭作為指令碼庫,要調用這個指令碼庫時只需要稍作改動就行。
首先建立一個XML文檔專門存放哪個指令碼會調用哪些庫,結構如下
<?xml version="1.0" encoding="utf-8" ?><LibMapping> <MainScript scriptName=""> <LibScript libFileName=""/> </MainScript></LibMapping>
例如:
<?xml version="1.0" encoding="utf-8" ?><LibMapping> <MainScript scriptName="script1.txt"> <LibScript libFileName="lib1.txt"/> <LibScript libFileName="lib3.txt"/> </MainScript> <MainScript scriptName="script2.txt"> <LibScript libFileName="lib1.txt"/> <LibScript libFileName="lib2.txt"/> </MainScript></LibMapping>
然後在執行指令碼之前分析XML,通過scriptName屬性找出它需要調用的指令碼庫,利用IO操作讀取指令碼庫檔案並添加到指令碼的字串中,代碼如下
string script = string.Empty; script += File.ReadAllText("script1.txt")+"\n";//讀取指令檔 string libScript = string.Empty; //分析XML檔案 XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load("LibMapping.xml"); XmlNode mainNode = xmlDoc.SelectSingleNode(string.Format("//LibMapping/MainScript[@scriptName=‘{0}‘]", "script1.txt")); if (mainNode != null) { XmlNodeList libList = mainNode.ChildNodes; //讀取指令碼庫 foreach (XmlNode node in libList) { string fileName = node.Attributes["libFileName"].Value; libScript += File.ReadAllText( fileName) + "\n"; } } script+= libScript;
Script s = Script.Compile(script);
這樣做的弊端是調試時不方便,如果指令碼代碼出錯或有異常,簡單的字串拼接會使出錯代碼的行數有可能不正確,尋找錯誤碼時有困難,希望有哪位大俠給出更好的解決辦法。
Script.NET實現指令碼庫