Dependencies
AllOverIt, the suite, contains a large number of packages, some of which are dependent on others within the suite. Understandably, this can make it difficult to keep track of which packages need to be explicitly included in your projects, and which can be transitively (implicitly) included.
The diagram below shows the package dependencies across the entire AllOverIt suite:
Understanding Dependencies
The diagram in the previous section shows a simplified view of package dependencies. The intention of this diagram is to assist with determining which packages need to be explicitly referenced in your projects, and which can be transitively (implicitly) referenced.
To help explain this further, consider an application that explicitly adds AllOverIt.EntityFrameworkCore.Pagination
to its' project using the Nuget Package Manager. The csproj
file will be updated to contain a section similar to this:
You will notice there are no references to any of AllOverIt.EntityFrameworkCore.Pagination
's dependencies. This is because they will be transitively (implicitly) included.
Explicit references
The example in the previous section describes how an application that explicitly references AllOverIt.EntityFrameworkCore.Pagination
will transitively reference each of its' dependencies. Diagrammatically, this would like the following:
Let's now update the application to include an explicit reference to AllOverIt.Reactive
. The csproj
file would now contain:
And the application's dependencies would now look like the following:
As a final update, let's now add an explicit reference to AllOverIt.Pipes
.
If you look back at the diagram showing all dependencies across AllOverIt you will see that AllOverIt.Pipes
has a dependency on AllOverIt.Reactive
. This means it can be implicitly, rather than explicitly, referenced by the application so the csproj
file can be simplified to the following:
And the application's dependencies would now look like the following:
Package Dependencies
Each section within this documentation that describes an AllOverIt package includes a dependency diagram that has been generated from the AllOverIt solution. From the context of this solution, the diagram includes (where applicable):
Explicit references to other AllOverIt projects.
Explicit references to Microsoft or third-party packages.
Other transitive package references.
Consider the following diagram from the AllOverIt.Validation.Options
package:
The purple-shaded box on the left contains the AllOverIt packages that AllOverIt.Validation.Options
has a dependency on.
The blue-shaded items are explicit package references made by the correspondingly linked AllOverIt package.
The yellow-shaded items are the immediate transitive references made by the correspondingly linked explicit package reference. There could very well be more transitive references from these; the intent of these diagrams is to provide a high-level view of any additional dependencies required by the package in question.
The Take-Away
Using the above example, the take-away from this is that if a project explicitly references AllOverIt.Validation.Options
, then every other package in that diagram is a transitive reference and therefore does not need to be included in that project's csproj
file.