コード例 #1
0
 private void CompilePython(PythonFileInfo scriptFile)
 {
     try
     {
         var scriptSource = _scriptEngine.CreateScriptSourceFromString(scriptFile.Source, Path.GetFullPath(scriptFile.FileName), SourceCodeKind.File);
         scriptFile.CompiledCode = scriptSource.Compile();
         scriptFile.Source       = null;
     }
     catch (Exception ex)
     {
         TraceLog.WriteError("CompilePython script:{0} error:{1}", scriptFile.FileName, ex);
     }
 }
コード例 #2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="fileName"></param>
        /// <param name="isReLoad"></param>
        /// <returns></returns>
        private PythonFileInfo LoadScript(string fileName, bool isReLoad = false)
        {
            PythonFileInfo scriptFileInfo = null;
            string         scriptCode     = GetScriptCode(fileName);

            if (!isReLoad && _pythonCodeCache.ContainsKey(scriptCode))
            {
                var old = _pythonCodeCache[scriptCode];
                if (!File.Exists(fileName) ||
                    old.HashCode == GetFileHashCode(fileName))
                {
                    return(old);
                }
            }
            scriptFileInfo = CreateScriptFile(fileName);
            if (scriptFileInfo != null)
            {
                _pythonCodeCache[scriptCode] = scriptFileInfo;
            }
            return(scriptFileInfo);
        }
コード例 #3
0
        /// <summary>
        /// 创建脚本文件信息对象
        /// </summary>
        /// <param name="fileName"></param>
        /// <returns></returns>
        private static ScriptFileInfo CreateScriptFile(string fileName)
        {
            ScriptFileInfo scriptFileInfo = null;

            if (!File.Exists(fileName))
            {
                return(scriptFileInfo);
            }

            var watchDir = _watcherDict.Where(pair => fileName.StartsWith(pair.Value.Path)).FirstOrDefault();

            FileInfo fi       = new FileInfo(fileName);
            string   fileCode = GetScriptCode(fileName);
            string   fileHash = GetFileHashCode(fileName);

            if (fi.Extension == ".py")
            {
                CompiledCode compiledCode = CompilePython(fileName);
                if (compiledCode != null)
                {
                    scriptFileInfo           = new PythonFileInfo(fileCode, fileName, compiledCode);
                    scriptFileInfo.HashCode  = fileHash;
                    scriptFileInfo.GroupName = watchDir.Key;
                }
            }
            else if (fi.Extension == ".cs")
            {
                scriptFileInfo           = new CSharpFileInfo(fileCode, fileName);
                scriptFileInfo.HashCode  = fileHash;
                scriptFileInfo.GroupName = watchDir.Key;
            }
            else
            {
                TraceLog.WriteError("Not supported \"{0}\" file type.", fileName);
            }
            return(scriptFileInfo);
        }
コード例 #4
0
ファイル: ScriptEngines.cs プロジェクト: qiuhe/Scut
        /// <summary>
        /// �����ű��ļ���Ϣ����
        /// </summary>
        /// <param name="fileName"></param>
        /// <returns></returns>
        private static ScriptFileInfo CreateScriptFile(string fileName)
        {
            ScriptFileInfo scriptFileInfo = null;
            if (!File.Exists(fileName))
            {
                return scriptFileInfo;
            }

            var watchDir = _watcherDict.Where(pair => fileName.StartsWith(pair.Value.Path)).FirstOrDefault();

            FileInfo fi = new FileInfo(fileName);
            string fileCode = GetScriptCode(fileName);
            string fileHash = GetFileHashCode(fileName);
            if (fi.Extension == ".py")
            {
                CompiledCode compiledCode = CompilePython(fileName);
                if (compiledCode != null)
                {
                    scriptFileInfo = new PythonFileInfo(fileCode, fileName, compiledCode);
                    scriptFileInfo.HashCode = fileHash;
                    scriptFileInfo.GroupName = watchDir.Key;
                }
            }
            else if (fi.Extension == ".cs")
            {
                scriptFileInfo = new CSharpFileInfo(fileCode, fileName);
                scriptFileInfo.HashCode = fileHash;
                scriptFileInfo.GroupName = watchDir.Key;
            }
            else
            {
                TraceLog.WriteError("Not supported \"{0}\" file type.", fileName);
            }
            return scriptFileInfo;
        }
コード例 #5
0
 private void CompilePython(PythonFileInfo scriptFile)
 {
     try
     {
         var scriptSource = _scriptEngine.CreateScriptSourceFromString(scriptFile.Source, Path.GetFullPath(scriptFile.FileName), SourceCodeKind.File);
         scriptFile.CompiledCode = scriptSource.Compile();
         scriptFile.Source = null;
     }
     catch (Exception ex)
     {
         TraceLog.WriteError("CompilePython script:{0} error:{1}", scriptFile.FileName, ex);
     }
 }
コード例 #6
0
ファイル: ScriptEngines.cs プロジェクト: haiya/Scut
 /// <summary>
 /// �����ű��ļ���Ϣ����
 /// </summary>
 /// <param name="fileName"></param>
 /// <returns></returns>
 private static ScriptFileInfo CreateScriptFile(string fileName)
 {
     ScriptFileInfo scriptFileInfo = null;
     if (!File.Exists(fileName))
     {
         return scriptFileInfo;
     }
     FileInfo fi = new FileInfo(fileName);
     string fileCode = GetScriptCode(fileName);
     string fileHash = GetFileHashCode(fileName);
     if (fi.Extension == ".py")
     {
         CompiledCode compiledCode = CompilePython(fileName);
         if (compiledCode != null)
         {
             scriptFileInfo = new PythonFileInfo(fileCode, fileName, compiledCode);
             scriptFileInfo.HashCode = fileHash;
         }
     }
     else if (fi.Extension == ".cs")
     {
         scriptFileInfo = new CSharpFileInfo(fileCode, fileName);
         scriptFileInfo.HashCode = fileHash;
     }
     else
     {
         TraceLog.WriteError("Not supported \"{0}\" file type.", fileName);
     }
     return scriptFileInfo;
 }