Script.NET實現指令碼庫

來源:互聯網
上載者:User

標籤:添加   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實現指令碼庫

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.