Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
When you cannot rely on Windows ML EPs — for example, on managed enterprise devices where Windows Update is restricted, in offline environments, or when you need strict version control — you can carry execution provider binaries directly in your project.
For guidance on choosing between the Windows ML EPs and the bring-your-own approach, see Windows ML EPs vs. bring-your-own.
Prerequisites
The execution provider you reference must be compatible with the ORT version that ships with the Windows ML version your app targets. See ONNX Runtime versions in Windows ML to know which version of ORT is in Windows ML.
Known EP NuGet packages
| EP | NuGet package |
|---|---|
| QNN (Qualcomm) | Qualcomm.ML.OnnxRuntime.QNN |
| OpenVINO (Intel) | Intel.ML.OnnxRuntime.EP.OpenVINO |
Register the EP with Windows ML ONNX Runtime
For execution providers you brought yourself, you will simply register the execution provider using the existing ONNX APIs, pointing to your execution provider DLL path.
// Point ORT at the EP library you shipped
// The path depends on how you package and ship the EP
OrtEnv.Instance().RegisterExecutionProviderLibrary("XYZExecutionProvider", "XYZ.EP.dll");
// And then inference using ORT
...
App distribution considerations
When bundling EP NuGet packages:
- Each EP package adds approximately 80 MB or more to your app package size.
- You are responsible for updating EP packages when new versions are released.
- EP binaries must be included in your app package or installer — they are not downloaded at runtime.
For a comparison of the bundle-vs-Windows ML EP tradeoffs, see Windows ML EPs vs. bring-your-own.