The resolution of commands depend on Directory.GetCurrentDirectory() and AppContext.BaseDirectory(). This introduces an implicit dependency between command resolution and the process that requests it (basedirectory) and the root process that spawned everything (getcurrentdirectory).
Instead, these paths should be variables resolved / injected at runtime.
This change enables:
- decoupling command resolution from process identity
- increased testability of the command resolution algorithm (can setup a fake environment and assert for resolution outcome)
- calling verbs in-proc and out-of-proc