- 26 May 2022
- 2 Minutes to read
Inedo SDK Versions & Release Notes
- Updated on 26 May 2022
- 2 Minutes to read
The Inedo SDK is used to build extensions to Inedo's core products (BuildMaster, ProGet, Otter) that implement core capabilities or add functionality. As new features are introduced into the core products, new components will be added to the SDK.
To keep track of which version of the SDK is compatible with which version of each product:
- the Inedo SDK is independently versioned using a three-part version number
- extensions are built against a specific version the Inedo SDK
- each product is built against a specific version of the Inedo SDK
Inedo products that are built against a specific version of the SDK can use extensions that were built against earlier verisons, so long as they have the same major release number.
- ProGet 5.3.21 targets SDK 1.10 and can use extensiosn built for SDK 1.10, 1.9, 1.8, etc.
- Otter 2022.0 targets SDK 2.0, and will not use extensions built against SDK 1.10
You should target the latest version of the SDK, unless you need your extension to be loaded in a specific earlier product version.
The Inedo SDK is semantically versioned, which means that:
- Major versions (e.g. 1.10 to 2.0) may remove components and introduce noncompatible API changes
- Minor versions (e.g. 1.10 to 1.11) may introduce new components, deprecate (with a
Obsoleteattribute) old components, and introduce other backwards-compatible API changes
- Patch versions (e.g. 1.10.0 to 1.10.1) introduce bugfix changes that do not affect the visible API
The below table shows the minimum version of each Inedo Product that the Inedo SDK is compatible with.
SDK v2 (2.0)
SDK v1 (1.0 to 1.14)
Note that the Linux versions of Inedo products (i.e. from ProGet 5.3.12+, BuildMaster 7.0.0+, and Otter 3.0.0+) only supports extensions using SDK 1.9+
The table will be expanded as new versions are released.
Overriding Product Compatibility
Inedo products can load extensions between
1.0.* and whatever version the product was built against. For example, ProGet 5.3.0 can load a
1.0.* extension, as well as a
1.3.* extension. This behavior is usually fine, but it may be inconvenient when extensions are designed to work with multiple products of different versions.
For example, let's say you have an extension with various components that are shared across your ProGet, Otter, and BuildMaster installations. If a new version of ProGet were to come out that introduces a new feature you wanted to extend, you would need to target a newer version of the Inedo SDK to access that new component. This would then mean you would have to upgrade Otter and BuildMaster (both which, presumably would be compatible with the new Inedo SDK), just so that extension can load.
To work around this, you can override the version number used for compatibility verification with the ProductVersionCompatibilityAttribute.
This attribute allows you to specify a range of versions that your extension is compatible with.