...
A nuget package is a zip file container with some meta information describing the contents of the filecontaining 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.
An example nuget package for a set of Custom Plugins is shown above. It contains 2 sections: the "<metadata>" section which provides general version and descriptive information for the package; and the "<files>" section which contains directions to the nuget packaging tool where to place the assembly files during the build process.
...
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" /> <file src="..\..\Plugin2\bin\$Configuration$\*.dll" target="Assemblies\Plugin2" /> <file src="..\..\Plugin3\bin\$Configuration$\*.dll" target="Assemblies\Plugin3" /> <file src="..\..\Plugin4\bin\$Configuration$\*.dll" target="Assemblies\Plugin4" /> <!-- Add large assemblies that should be associated with every Plugin--> <file src="..\..\library\*.dll" target="Assemblies\Shared" /> </files> </package> |
An example nuget package generated from the above nuspec would have the structure below.
Here are some basic rules about the package structure for Connexion Plugins:
- 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.
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