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); } }
/// <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); }
/// <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); }
/// <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; }
/// <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; }