https://github.com/gitextensions/gitextensions.pluginmanager
Package manager for downloading and installing Git Extensions plugins.
https://github.com/gitextensions/gitextensions.pluginmanager
gitextensions gitextensions-plugin
Last synced: 4 months ago
JSON representation
Package manager for downloading and installing Git Extensions plugins.
- Host: GitHub
- URL: https://github.com/gitextensions/gitextensions.pluginmanager
- Owner: gitextensions
- License: mit
- Created: 2019-05-26T02:14:22.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2025-08-27T07:24:07.000Z (4 months ago)
- Last Synced: 2025-08-28T23:33:37.549Z (4 months ago)
- Topics: gitextensions, gitextensions-plugin
- Language: C#
- Homepage:
- Size: 354 KB
- Stars: 17
- Watchers: 6
- Forks: 13
- Open Issues: 11
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE.md
Awesome Lists containing this project
README
# GitExtensions.PluginManager
NuGet based plugin manager for Git Extensions

Repository with some example plugins - https://www.myget.org/F/neptuo-gitextensions/api/v2.
Nightly builds of PluginManager available at Appveyor - https://ci.appveyor.com/nuget/gitextensions-pluginmanager.
### Appveyor
[](https://ci.appveyor.com/project/gitextensions/gitextensions-pluginmanager)
### Browsing for packages
PluginManager integrated into Git Extensions filters packages with dependency on `GitExtensions.Extensibility`. This package is right now a kind of meta package and it is used to mark nuget packages intended as Git Extensions plugins.
### Command line arguments
PluginManager is designed to be a reusable tool to manage plugins distributed as nuget packages. This repository contains an integration package for Git Extensins.
As a standalone application, PluginManager supports these command line arguments:
- `--path` (required) - A root path to a directory where to install packages.
- `--selfpackageid` (optional) - A package id to indicate which package should be treated as a package for self update.
- `--dependencies` (optional) - A comma separated list of package ids and versions that are required in package to be compatible (Eg. `GitExtensions.Extensibility-v3.0,TestA,TestB-v1`).
- `--monikers` (optional) - A comma separated list of .NET framework monikers to filter package content during extraction (Eg. `net461,netstandard2.0`).
- `--processnamestokillbeforechange` - A comma separated list of process names to be killed before any changes being processed (it is used to kill all instances on Git Extensions before installing/uninstalling dlls, that might be locked).
### Binding between GitExtensions.PluginManager and GitExtensions.Extensibility
The plugin defines a required dependency on `GitExtensions.Extensibility` (see [Plugin.cs#L55](https://github.com/gitextensions/gitextensions.pluginmanager/blob/master/src/GitExtensions.PluginManager/Plugin.cs#L55)) which filters out packages that are not meant as plugins for Git Extensions. The idea is that by selecting minimal version, we limit plugins targeting a specific Git Extensions version. Each version of Git Extensions that is not compatible with the previous one in terms of plugins, should increment a Major version (before we stabilize GitExtensions.Extensibility, we are incrementing Minor version).
### Icons
Some icons by Yusuke [Kamiyamane](http://p.yusukekamiyamane.com).
Some other by [Material Design](https://material.io/tools/icons).