`IsOutOfDateAlgorithm ` is an algorithm that answers the question "Is the script file changed since the last execution?"
Since you are not using script file but script code, the algorithm will always respond "yes the script file is changed". This response is the only reliable logical return result as script code is written in a random script file before being executed. Thus every time it is a new file.
Saying that `CSScript.CacheEnabled = true` still works within a single session (process). Thus if you call `
CSScript.LoadMethod(code, "sqrt.dll", true)
` N times it will be compiled only once. Thus a break point in your `
CSScript.IsOutOfDateAlgorithm = (script, dll) =>
. . .` will be fired only once.
If you truly need to achieve inter-session caching then you will need to handle `code->file` transition by yourself.
=====================