Vixen
02b45cc4
csharp
public record class PluginManifest

What a plugin says about itself, before any of its code has run.

No guide page documents this yet — the page shows what the code says about itself.

Remarks

Everything the loader needs to refuse a plugin is here, in a file it can read without loading an assembly. That is the whole reason a manifest exists rather than an attribute on the entry type: an incompatible plugin, a plugin whose dependency is missing and a plugin the user switched off all have to be dealt with before the editor maps somebody else's IL into its own process.

It is a [DataContract] read by the same YAML binder as a .meta file and a settings asset, so an unknown key is ignored rather than fatal — a manifest written for a later editor still loads on this one, which is the behaviour that lets a plugin ship a single file for two versions.

⚠ The file is plugin.yaml and its directory is the plugin. Not a search of the whole tree for assemblies: a folder either declares itself or is not a plugin, and an editor that loaded whatever DLLs it found under a directory the user can write to is an editor with an interesting security model.

Fields and properties (12)

  • public const string FileName

    What the file is called, in every directory that has one.

  • public string Id

    What everything refers to the plugin by: com.example.terrain.

  • public string Name

    What it is called on screen.

  • public Version Version

    The plugin's own version, which is the author's to number.

  • public Version Api

    Which version of the editor's contract it was built against.

  • public string Assembly

    The file holding its code, relative to the plugin's directory.

  • public string EntryPoint

    The full name of the type implementing IEditorPlugin, or empty to find it.

  • public string Description

    A sentence about what it does, shown in the plugin list.

  • public string Author

    Who wrote it.

  • public List<string> Dependencies

    The ids of plugins that have to be activated before this one.

  • public bool Enabled

    Whether to load it at all.

  • public string AssemblyFileName

    The assembly file to look for, which is Assembly or a name from the id.

Methods (2)

  • public IReadOnlyList<string> Problems()

    What is wrong with this manifest, if anything.

  • public override string ToString()

    Returns a string that represents the current object.

Used by (13)

  • DeclaredContributionsVixen.Editor.App
  • EditorApplicationVixen.Editor.App
  • LoadedPluginVixen.Editor.Plugin
  • ManifestTestsVixen.Editor.Plugin.Tests
  • OrderTestsVixen.Editor.Plugin.Tests
  • PluginContextVixen.Editor.Plugin
  • PluginDescriptorVixen.Editor.Plugin
  • PluginDiscoveryVixen.Editor.Plugin
  • PluginFolderVixen.Editor.App.Tests
  • PluginHostVixen.Editor.Plugin
  • PluginManagerViewVixen.Editor.App
  • PluginOrderVixen.Editor.Plugin
  • TypeRegistrationVixen.Editor.Plugin