...
There is plenty of information on the web that describes the .nuget package structure and how to use the .nuget package creation tools so we will not cover those here. Please see:
Quickstart: Create and publish a package
...
Rather, we will look at the specifics of building a .nuget package that contains 1 or more Custom Plugins that can be imported into Connexion.
A nuget package is a zip file containing files and folders as well as additional meta data describing the package. The full description of nuget can be found here. Connexion uses a very minimal set of the .nuget package capabilities. In fact, it only uses the metadata section and Assembly Files section. Connexion does not use any of the dependency information, framework version, or any of the other features .nuget provides as they are mostly not applicable to a Connexion Plugin management.
...
Code Block | ||||
---|---|---|---|---|
| ||||
<?xml version="1.0"?> <package xmlns="http://schemas.microsoft.com/packaging/2013/05/nuspec.xsd"> <metadata> <id>Connexion.SampleDevice</id> <version>$version$</version> <authors>Nick, Jon</authors> <licenseUrl>http://hl7spy.ca/wp-content/uploads/2011/11/Eula.pdf</licenseUrl> <projectUrl>https://conevity.atlassian.net/wiki/spaces/CON/pages/14057474/Releases</projectUrl> <iconUrl>http://www.hl7spy.com/downloads/logo.png </iconUrl> <requireLicenseAcceptance>false</requireLicenseAcceptance> <description>This is a sample of how to build a Connexion Device</description> <releaseNotes></releaseNotes> <copyright>Copyright 2019 Conevity Solutions Inc.</copyright> <tags>Connexion Device</tags> <summary></summary> </metadata> <files> <!-- Add assemblies from each Plugin separately at the end of the build--> <file src="..\..\Plugin1\bin\$Configuration$\*.dll" target="Assemblies\Plugin1" exclude="**\Connexion.*.dll;**\Newtonsoft.Json.dll"/> <file src="..\..\Plugin2\bin\$Configuration$\*.dll" target="Assemblies\Plugin2" exclude="**\Connexion.*.dll;**\Newtonsoft.Json.dll"/> <file src="..\..\Plugin3\bin\$Configuration$\*.dll" target="Assemblies\Plugin3" exclude="**\Connexion.*.dll;**\Newtonsoft.Json.dll"/> <file src="..\..\Plugin4\bin\$Configuration$\*.dll" target="Assemblies\Plugin4" exclude="**\Connexion.*.dll;**\Newtonsoft.Json.dll"/> <!-- Add large assemblies that should be associated with every Plugin--> <file src="..\..\library\*.dll" target="Assemblies\Shared" /> </files> </package> |
...
- Each plugin should have its own folder (eg. Plugin1, Plugin2, etc) under the "Assemblies" folder
- Each plugin should include all its dependent dlls (with the exception of dlls placed within the Shared folder) that are required by the plugin at run-time.
- Any large assemblies, required by ALL Plugins can optionally be placed in the Assemblies/Shared folder to save space.
- Assembly files that your plugin does not require should be excluded. In particular you do not need to include any Connexion assemblies. In the example above the .nuget package is explicitly excluding any Connexion assemblies as well as the Newtonsoft.Json.dll since the latest version is included with Connexion.
Code Block | ||
---|---|---|
| ||
ConnexionSample.nuget | ConnexionSample.nuspec | [Content_Types].xml | +---Assemblies | +---Plugin1 | | Hl7.Fhir.STU3.Specification.dll | | Hl7.Fhir.Support.dll | | Hl7.FhirPath.dll | | MModal.AdtHl7FhirProcessor.dll | | System.ValueTuple.dll | | | +---Plugin2 | | Connexion.Edifact.Hipaa.dll | | EdiFabric.Core.dll | | EdiFabric.Framework.dll | | Hl7.Fhir.STU3.Specification.dll | | Hl7.Fhir.Support.dll | | Hl7.FhirPath.dll | | MModal.837ClaimsFhirProcessor.dll | | System.ValueTuple.dll | | | +---Plugin3 | | Hl7.Fhir.STU3.Specification.dll | | Hl7.Fhir.Support.dll | | Hl7.FhirPath.dll | | MModal.FhirSender.dll | | System.ValueTuple.dll | | | +---Plugin4 | | Hl7.Fhir.Support.dll | | Hl7.FhirPath.dll | | MModal.SiuHl7FhirProcessor.dll | | System.ValueTuple.dll | | | \---Shared | ConnexionDevicesCommon.dll | Hl7.Fhir.STU3.Core.dll | +---package | \---services | \---metadata | \---core-properties | b61692f050fd4dc5be95bc1fed53df7b.psmdcp | \---_rels .rels |
...