If the engine gets an exception during execution, the cache is sometimes to blame. At issue is that invalidating the cache on things like dependency changes is really hard. In lieu of trying to figure that out (which may be impossible given things like non-deterministic builds and no way to get a reliable hash of an assembly), one simpler plan may be to just delete the cache whenever an exception is raised and output a note to try running again - something like "The errors above may have been the result of caching. The cache folder has been cleared so try execution again.". We'd want to only show that error if there actually was a cache folder.
If the engine gets an exception during execution, the cache is sometimes to blame. At issue is that invalidating the cache on things like dependency changes is really hard. In lieu of trying to figure that out (which may be impossible given things like non-deterministic builds and no way to get a reliable hash of an assembly), one simpler plan may be to just delete the cache whenever an exception is raised and output a note to try running again - something like "The errors above may have been the result of caching. The cache folder has been cleared so try execution again.". We'd want to only show that error if there actually was a cache folder.