# Grasshopper2.Framework namespace

Assembly: [Grasshopper2](https://developer.rhino3d.com/api/gh2/assembly/grasshopper2.md)

## Classes

- [FailureInfo](https://developer.rhino3d.com/api/gh2/type/grasshopper2.framework.failureinfo.md): Collation of data fields describing a particular load failure.
- [FleetingPlugin](https://developer.rhino3d.com/api/gh2/type/grasshopper2.framework.fleetingplugin.md): A plugin which was installed for the lifetime of a single file, and the package folder which is to be deleted again once it has served its purpose.
- [FleetingPlugins](https://developer.rhino3d.com/api/gh2/type/grasshopper2.framework.fleetingplugins.md): Tracks plugins which were installed only so that one particular file could be opened, and which are to be removed again once they have served that purpose. Two things happen to a fleeting plugin. It is loaded like any other plugin, because a document cannot be read without it, but its objects are kept out of the icon panels and out of search — the user asked for a file, not for a new set of components. And the package behind it is deleted from disk again. The deletion cannot happen while Grasshopper runs. .NET offers no way to unload an assembly from the process, so the earliest a package can go is at shutdown, and on Windows not even then, since the file is still mapped. So the packages to delete are written to a ledger in the settings folder, that ledger is worked through at every startup before any plugin is scoped, and entries survive there until the deletion actually succeeds. A session which crashes therefore still cleans up after itself on the next launch.
- [FunctionProxies](https://developer.rhino3d.com/api/gh2/type/grasshopper2.framework.functionproxies.md): Collection of all loaded function proxies.
- [FunctionProxy](https://developer.rhino3d.com/api/gh2/type/grasshopper2.framework.functionproxy.md): A proxy holding all required information about a certain [Function](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.functions.function.md).
- [GeneralProxy<T>](https://developer.rhino3d.com/api/gh2/type/grasshopper2.framework.generalproxy-1.md): Base class for creating type proxies.
- [GrasshopperCorePlugin](https://developer.rhino3d.com/api/gh2/type/grasshopper2.framework.grasshoppercoreplugin.md): Plugin implementation for the core assembly.
- [ObjectProxies](https://developer.rhino3d.com/api/gh2/type/grasshopper2.framework.objectproxies.md): Collection of all loaded document object proxies.
- [ObjectProxies.Chapter](https://developer.rhino3d.com/api/gh2/type/grasshopper2.framework.objectproxies.chapter.md): Provides enumeration functionality for sections in the ObjectServer.
- [ObjectProxies.Section](https://developer.rhino3d.com/api/gh2/type/grasshopper2.framework.objectproxies.section.md): Provides enumeration functionality for proxies in the ObjectServer.
- [ObjectProxy](https://developer.rhino3d.com/api/gh2/type/grasshopper2.framework.objectproxy.md): A proxy holding all required information about a certain type of Document object.
- [PackageOffer](https://developer.rhino3d.com/api/gh2/type/grasshopper2.framework.packageoffer.md): What the package server can do about one missing plugin. Establishing this takes a round trip to the server, so it is done once, in the background, and the answer is carried around afterwards. An offer which is not [PackageOffer.IsAvailable](https://developer.rhino3d.com/api/gh2/type/grasshopper2.framework.packageoffer/isavailable.md) names the reason in [PackageOffer.Obstacle](https://developer.rhino3d.com/api/gh2/type/grasshopper2.framework.packageoffer/obstacle.md), which is what the user is shown in place of a button they cannot press.
- [PackageRestore](https://developer.rhino3d.com/api/gh2/type/grasshopper2.framework.packagerestore.md): Fetches the plugins a document needs but does not have. This happens in two steps, deliberately. [PackageRestore.Offer(PluginRequirement)](https://developer.rhino3d.com/api/gh2/type/grasshopper2.framework.packagerestore/offer.md) asks the package server what it can supply, which is what allows the user to be shown a button only when pressing it would achieve something. [PackageRestore.Restore(PackageOffer, bool, IProgress<string>)](https://developer.rhino3d.com/api/gh2/type/grasshopper2.framework.packagerestore/restore.md) then acts on an offer without going back to the server to ask the same questions again. A restore can be permanent, which is an ordinary installation the user keeps, or fleeting, which lasts only as long as this session and leaves the plugin's objects out of the icon panels — see [FleetingPlugins](https://developer.rhino3d.com/api/gh2/type/grasshopper2.framework.fleetingplugins.md). The mechanics are identical either way; only the bookkeeping differs.
- [Performance](https://developer.rhino3d.com/api/gh2/type/grasshopper2.framework.performance.md)
- [Plugin](https://developer.rhino3d.com/api/gh2/type/grasshopper2.framework.plugin.md): Every grasshopper plugin assembly must implement a single public type with a public, parameter-less constructor derived from this class.
- [PluginEventArgs](https://developer.rhino3d.com/api/gh2/type/grasshopper2.framework.plugineventargs.md): Event arguments used for plugin server changes.
- [PluginRequirement](https://developer.rhino3d.com/api/gh2/type/grasshopper2.framework.pluginrequirement.md): A record of one plugin which a document relied on at the moment it was saved. Documents store these so a later session can find out what is missing — and offer to fetch it — before deserialisation starts discarding objects whose types it cannot resolve.
- [PluginRequirements](https://developer.rhino3d.com/api/gh2/type/grasshopper2.framework.pluginrequirements.md): 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.
- [Plugins](https://developer.rhino3d.com/api/gh2/type/grasshopper2.framework.plugins.md): Immutable collection of plugin data.
- [PluginServer](https://developer.rhino3d.com/api/gh2/type/grasshopper2.framework.pluginserver.md): Central repository for all loaded plugins.
- [PluginServerGridView](https://developer.rhino3d.com/api/gh2/type/grasshopper2.framework.pluginservergridview.md): A tree grid view for browsing the state of plugins.
- [PluginStore](https://developer.rhino3d.com/api/gh2/type/grasshopper2.framework.pluginstore.md): An Eto UI store for loaded plugins.
- [PluginStoreButton](https://developer.rhino3d.com/api/gh2/type/grasshopper2.framework.pluginstorebutton.md): A button label on the plugin grid.
- [PluginStoreEventArgs](https://developer.rhino3d.com/api/gh2/type/grasshopper2.framework.pluginstoreeventargs.md): Event arguments used in the [PluginStore.PluginStateChanged](https://developer.rhino3d.com/api/gh2/type/grasshopper2.framework.pluginstore/pluginstatechanged.md) event.
- [Query](https://developer.rhino3d.com/api/gh2/type/grasshopper2.framework.query.md): A single fragment in a query string.
- [RestoreReport](https://developer.rhino3d.com/api/gh2/type/grasshopper2.framework.restorereport.md): What became of one missing plugin during a package restore.
- [Snippet](https://developer.rhino3d.com/api/gh2/type/grasshopper2.framework.snippet.md): A pointer to a GHZ file containing a bunch of components acting as a snippet. The basic descriptive properties ([Snippet.Nomen](https://developer.rhino3d.com/api/gh2/type/grasshopper2.framework.snippet/nomen.md), [Snippet.Icon](https://developer.rhino3d.com/api/gh2/type/grasshopper2.framework.snippet/icon.md)) are read lazily from standalone chunks in the archive so the snippet can be drawn in the UI without deserialising the document graph. The document is only opened when a [Snippet.Preview](https://developer.rhino3d.com/api/gh2/type/grasshopper2.framework.snippet/preview.md) bitmap is requested.
- [SnippetServer](https://developer.rhino3d.com/api/gh2/type/grasshopper2.framework.snippetserver.md): Maintains all loaded snippets.

## Enums

- [FailureKind](https://developer.rhino3d.com/api/gh2/type/grasshopper2.framework.failurekind.md): Enumerates the possible ways in which a plugin can fail to load.
- [LoadState](https://developer.rhino3d.com/api/gh2/type/grasshopper2.framework.loadstate.md): Enumerates the stages of the Grasshopper startup sequence, in order.
- [NameDescription](https://developer.rhino3d.com/api/gh2/type/grasshopper2.framework.namedescription.md)
- [PluginKind](https://developer.rhino3d.com/api/gh2/type/grasshopper2.framework.pluginkind.md): Enumerates the different types of plugin file that Grasshopper might load.
- [PluginState](https://developer.rhino3d.com/api/gh2/type/grasshopper2.framework.pluginstate.md): Enumerates the possible states a GHP plugin can assume.
- [PluginStoreFilter](https://developer.rhino3d.com/api/gh2/type/grasshopper2.framework.pluginstorefilter.md): Enumerates the possible elements the [PluginStore](https://developer.rhino3d.com/api/gh2/type/grasshopper2.framework.pluginstore.md) can include.
- [QueryType](https://developer.rhino3d.com/api/gh2/type/grasshopper2.framework.querytype.md): Enumerates the various kinds of queries.
- [RestoreOutcome](https://developer.rhino3d.com/api/gh2/type/grasshopper2.framework.restoreoutcome.md): Enumerates how an attempt to restore one missing plugin ended.
- [TypeDescription](https://developer.rhino3d.com/api/gh2/type/grasshopper2.framework.typedescription.md)
