Folder Structure

General Information

Each plugin is installed in its own folder within the Plugins folder (V4+). One folder — one plugin. Inside the folder, there must be at least two files — the plugin’s dll file and its manifest Manifest.xml (V6+, see note on V4/V5). In addition to these, the plugin folder and its subfolders may contain additional libraries, configuration files, resources, and so on.

The SyrveFront application retrieves all plugin information from the Manifest.xml file.

The SyrveFront API contract files (Resto.Front.Api.Vx.dll, Resto.Front.Api.Vx.xml) are only needed during the development and compilation of the plugin and should not be distributed or installed with the plugin; at runtime, contracts from the SyrveFront application folder will be used. When referencing contracts in the project via a direct link to the dll file, Copy Local = False should be specified. When connecting a NuGet package via PackageReference for versions prior to V7Preview2, centering must be disabled using <PrivateAssets>all</PrivateAssets> (description), starting from V7Preview2, centering is disabled automatically.

Structure of the Manifest.xml File

Required Parameters

Additional Parameters

Legacy Version for V4/V5

When releasing API versions up to and including V5, an old variant was used — several dll files (the plugin itself and its dependencies) ended up in the plugin folder, and the SyrveFront application scanned all these dll files for a class implementing the marker interface IFrontPlugin and read additional parameters from the attributes of the found class. This approach had several drawbacks, and starting from V6, it was replaced by the manifest variant. If for V6 the manifest is mandatory, then for previously released API versions (V4/V5), both variants will be supported: in the absence of a manifest, dll files will be scanned in the old way, and if the Manifest.xml file is present, the data will be read from it. The manifest variant is more reliable and faster than scanning dll files, so it is recommended to add this optional file even for plugins on V4/V5.

However, plugins on V4/V5 must continue to adhere to the contract and still specify attributes for scanning even when using a manifest. Since support for manifests was added to the SyrveFront application starting from version 6.4, previously released versions of the application will always scan dll files regardless of the presence of a manifest.

Examples

<?xml version="1.0" encoding="utf-8" ?>
<Manifest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2001/XMLSchema ../Binaries/Syrve/Manifest.xsd">
  <FileName>Resto.Front.Api.SamplePlugin.dll</FileName>
  <TypeName>Resto.Front.Api.SamplePlugin.SamplePlugin</TypeName>
  <ApiVersion>V6</ApiVersion>
  <LicenseModuleId>21005108</LicenseModuleId>
</Manifest>

This example, as well as the xml file schema Manifest.xsd, can be viewed in the SyrveFront API SDK.