Troubleshooting

Building & deploying

Troubleshooting

Build and deploy problems that stop a plugin from loading, each with its cause and fix.

Read the plugin log first

The platform writes plugin activity to the Control Center Log tab under the Plugins category: a summary line at startup (how many plugins loaded and what they registered), a line for every reload with the number of types it registered, and a line for every load or registration error, naming the DLL or type. Check it before anything else.

Skipped types do not produce errors. A type that fails a discovery rule (not public, no suitable constructor, no recognised contract) is skipped without an error line: the DLL loads, but the type is not cataloged, so the log shows fewer types than you expected. Load errors (a malformed DLL, a missing dependency) do produce error lines.

Common symptoms & fixes

Symptom Likely cause & fix
Plugin does not appear, no error in the log The type failed a discovery rule. It must be public, concrete (not abstract, an interface or an open generic), have a constructor the platform can call, and implement a recognised contract. See Discovery rules.
Plugin builds but no Plugins log line mentions it The DLL is not in the folder the platform reads. Check the deploy path in the build log against Documents\SabrTrader\Plugins, and check that SabrTraderPluginsFolder is not set to another folder in your project. A DLL in a subfolder, or one named like a built-in plugin assembly, is not loaded. See Where to deploy.
An indicator is listed, but a strategy or drawing tool from the same DLL is not Strategies and drawing tools need a real public parameterless constructor; a constructor whose parameters all have defaults does not count for them. Strategies must also be top-level (not nested) classes.
"Could not load file or assembly <X>" A third-party dependency is missing. Copy that DLL into the plugin folder next to your plugin. See Third-party dependencies.
A reference to a SabrTrader.* assembly fails to load Your plugin was compiled against a newer SDK than the platform ships. Build against the SDK version that matches your platform release, or update the platform.
MissingMethodException or TypeLoadException from an SDK type Your plugin was compiled against an SDK version whose API differs from the platform's. Rebuild against the matching SDK version.
Plugin fails to load with a framework error Wrong target framework. Build for net10.0.
A rebuild does not take effect Check the log for a reload line. If the reload failed, the previous build stays registered and the log names the error. A running strategy keeps its build until it stops, and a connected venue switches at its next connect. See The build and reload loop.
The log is full of lines about DLLs that are not plugins You copied the whole bin folder. Keep only your DLL, its PDB and the third-party libraries the platform does not ship.

Quick checklist

When a plugin does not show up, go through these in order:

  1. Is the type public and concrete, with a constructor the platform can call, and does it implement a recognised contract?
  2. Is your DLL directly in Documents\SabrTrader\Plugins (the real Documents folder, not a subfolder), with a file name of its own?
  3. Does the plugin target net10.0 and an SDK version that matches the platform?
  4. Does the Control Center Log tab show a Plugins line for your DLL, and does it name an error?
Still stuck? The Troubleshooting & FAQ page covers problems after loading: an indicator that renders nothing, a strategy that gets no callbacks, a venue that is not listed, and more.