# PluginRequirements class

Namespace: [Grasshopper2.Framework](https://developer.rhino3d.com/api/gh2/namespace/grasshopper2.framework.md) · Assembly: [Grasshopper2](https://developer.rhino3d.com/api/gh2/assembly/grasshopper2.md)

```cs
public sealed class PluginRequirements
```

The complete set of plugins a document relied on when it was saved, stored in the GHZ file so that opening it can establish what is missing before deserialisation quietly discards every object it cannot resolve.

This supersedes the `Plugins.txt` entry which earlier versions wrote and which nothing ever read.

## Constructors

- [PluginRequirements](https://developer.rhino3d.com/api/gh2/type/grasshopper2.framework.pluginrequirements/ctor.md): (2 overloads) Deserialisation constructor.

## Fields

- [ArchiveEntry](https://developer.rhino3d.com/api/gh2/type/grasshopper2.framework.pluginrequirements/archiveentry.md): (static) The archive entry under which requirements are stored.

## Properties

- [All](https://developer.rhino3d.com/api/gh2/type/grasshopper2.framework.pluginrequirements/all.md): Enumerate over every recorded requirement, satisfied or not.
- [Count](https://developer.rhino3d.com/api/gh2/type/grasshopper2.framework.pluginrequirements/count.md): Gets the number of recorded requirements.
- [Empty](https://developer.rhino3d.com/api/gh2/type/grasshopper2.framework.pluginrequirements/empty.md): (static) Gets an empty set of requirements, which is what a file written before requirements existed amounts to.
- [Missing](https://developer.rhino3d.com/api/gh2/type/grasshopper2.framework.pluginrequirements/missing.md): Gets every requirement which no currently loaded plugin satisfies.
- [Restorable](https://developer.rhino3d.com/api/gh2/type/grasshopper2.framework.pluginrequirements/restorable.md): Gets every missing requirement which the package server could plausibly supply. A missing core plugin is excluded, as that is a damaged installation rather than an absent download.

## Methods

- [FromDocument](https://developer.rhino3d.com/api/gh2/type/grasshopper2.framework.pluginrequirements/fromdocument.md): (static) Harvest the requirements of a document as it stands now, by asking the plugin server which plugin owns each object in it.
- [FromFile](https://developer.rhino3d.com/api/gh2/type/grasshopper2.framework.pluginrequirements/fromfile.md): (static) Read only the requirements out of a GHZ file, without deserialising the document inside it. This is what makes it affordable to check a file for missing plugins before deciding whether to open it at all.
- [Read](https://developer.rhino3d.com/api/gh2/type/grasshopper2.framework.pluginrequirements/read.md): (static) Read the requirements out of an archive which has already been read.
- [Store](https://developer.rhino3d.com/api/gh2/type/grasshopper2.framework.pluginrequirements/store.md): Serialisation method.
- [Write](https://developer.rhino3d.com/api/gh2/type/grasshopper2.framework.pluginrequirements/write.md): Write these requirements into an archive.
