Symptoms

A Script references a Script Library ("Library A"), which in turn references another Script Library ("Library B"). If the indirectly-referenced library ("Library B") is modified, the script will either execute code from the old version of the library, or fails with error "Could not load file or assembly."

Cause

When adTempus runs a script, it compiles the script and any referenced libraries into Microsoft.NET assemblies, which are cached so they can be run in the future without compiling the code again. In this scenario, the script engine does not detect that the script is affected by the change to the indirectly-referenced library, so it does not recompile the script. Therefore the version of the script being executed is the version that still references the older version of the library, so the older code is called.

Eventually the script engine will remove the old version of the library from cache. Once this happens, the script execution will fail because it won't be able to load the version of the library it is looking for.

Workaround

There are two workarounds for this problem:

1. Edit and save the affected scripts and/or the directly referenced libraries. This will cause the script engine to recompile the script and pull in the latest version of the indirectly-referenced library.

2. Clear the script cache to force the script engine to recompile all scripts on the next execution. The cache is found under "C:\Users\UserName\AppData\Local\Arcana Development\adTempus\ScriptEngine\Cache", where UserName is the user whose account the job is running under. If you are running script jobs under multiple user accounts, you will need to clear the cache for each user.

To clear the cache, simply delete everything in that folder. However, you may not be able to delete all the files while job host (adtempus.jobhost.exe) is running. This process will shut itself down if it has not run any scripts in the last 10 minutes or so, or you can kill it through Task Manager if you are sure no scripts are running.

Status

  • adTempus 4
    This issue has been resolved. Resolved in version 4.7.