A NuGet package is a single ZIP file with a .nupack or .nupkg extension that contains compiled code (DLL
s), other files related to that code, and a descriptive manifest that includes information like the package's version number. Developers with code to share create packages and publish them to a public or private host. Package consumers obtain those packages from suitable hosts, add them to their projects, and then call a package's function.
Source uses NuGet to distribute two packages respectively for the functionality of Music_X and UrbanDeveloper. The local NuGet repository location of packages is in the Source Plugin folder such as /Source_5.30.0.12680/Plugins/CommunityPlugins/nuget/, which includes Music_X.1.10.0.nupkg and UrbanDeveloper.1.3.1.nupkg. Here, .1.10.0. and .1.3.1. represent the version of DLL and could be changed with the Source version. The Source user does not need to directly interact with the NuGet package because all dependent packages/DLLs or linkage to the used server(s) are already included in the relevant NuGet package file by the developer.
For the Source user, you should pay attention to the warning message when adding any plugin to the Source project for Music_X or UrbanDeveloper functionality. The warning provides information on dependent DLL(s) (e.g., the UrbanDevloper plugin depends on MatchNet.Numerics and DynamicData). The user needs to add the dependent plugins (/DLLs) before the target plugin.
For MUSIC NuGet package:
- Common.UserInterface plugin depends on plugin MusicX.Models.
- Models plugin depends on plugins of (i) INIFileParser and (ii) MathNet.Numerics
- UserInterface plugin depends on plugins of (i) TuesPechkin and (ii) Nustache.Core
Some plugins of MUSIC X can automatically load the required binaries.
- Models plugin can automatically load the following binaries:
- MusicX.Core.dll
- FluentValidation.dll
2. RS.UserInterface plugin can automatically load the following binaries:
- MusicX.Models.dll
- MusicX.Common.Resources.dll
- MusicX.Common.UserInterface.dll
3.UserInterface plugin can automatically load the following binaries:
- MusicX.Models.dll
- MusicX.Core.dll
- FluentValidation.dll
- MusicX.Common.Resources.dll
- MusicX.Common.UserInterface.dll
The example interface of the warning and notice information triggered by the Music X NuGet package is as Figure 1 below:
Figure 1. Warning and notice example by the Music X NuGet package
For UrbanDevloper NuGet package
- The ReactiveUI plugin depends on the plugin of
- The UrbanDevloper plugin depends on the plugins of (i) Numerics and (ii) DynamicData
- Tests plugin depends on the plugins of (i) MatchNet.Numerics and (ii) NSubstitute.
In addition,
- ReactiveUI plugin will automatically load the binary of Dll
- UrbanDevloper plugin will automatically load the binary of dll
- Tests plugin will automatically load the binary of UrbanDevloper.dll
The example interface of warning and noticer information triggered by the UrbanDevloper NuGet package is shown in Figure 2
Figure 2. Warning and notice example by the UrbanDevloper NuGet package
The user only needs to react correspondingly based on the warning information.