Toolshed’s primary method of controling which commands are available (which dictates everything from parsing to execution flow) is through
ToolshedEnvironment. The default environment lives at
ToolshedManager.DefaultEnvironment, and contains every command with the
[Toolshedcommand] attribute applied.
- Cache your environments,
ToolshedEnvironmentis extremely expensive to create and should not be created more than once per system using them if possible.
- Avoid using the default environment for non-debug things, construct your own environment for your systems.
- Don’t abuse reflection to obtain command types that’re marked internal or private, internal APIs are guaranteed to be unstable.