AllOverIt Reference v7 Help

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:

AllOverIt Dependencies

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:

<ItemGroup> <PackageReference Include="AllOverIt.EntityFrameworkCore.Pagination" Version="7.0" /> </ItemGroup>

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:

explicit
transitive
transitive
transitive
transitive
Application
AllOverIt.EntityFrameworkCore.Pagination
AllOverIt.Pagination
AllOverIt.Serialization.Binary
AllOverIt
AllOverIt.Assertion

Let's now update the application to include an explicit reference to AllOverIt.Reactive. The csproj file would now contain:

<ItemGroup> <PackageReference Include="AllOverIt.EntityFrameworkCore.Pagination" Version="7.0" /> <PackageReference Include="AllOverIt.Reactive" Version="7.0" /> </ItemGroup>

And the application's dependencies would now look like the following:

explicit
explicit
transitive
transitive
transitive
transitive
Application
AllOverIt.EntityFrameworkCore.Pagination
AllOverIt.Pagination
AllOverIt.Serialization.Binary
AllOverIt
AllOverIt.Assertion
AllOverIt.Reactive

As a final update, let's now add an explicit reference to AllOverIt.Pipes.

<ItemGroup> <PackageReference Include="AllOverIt.EntityFrameworkCore.Pagination" Version="7.0" /> <PackageReference Include="AllOverIt.Reactive" Version="7.0" /> <PackageReference Include="AllOverIt.Pipes" Version="7.0" /> </ItemGroup>

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:

<ItemGroup> <PackageReference Include="AllOverIt.EntityFrameworkCore.Pagination" Version="7.0" /> <PackageReference Include="AllOverIt.Pipes" Version="7.0" /> </ItemGroup>

And the application's dependencies would now look like the following:

explicit
explicit
transitive
transitive
transitive
transitive
transitive
Application
AllOverIt.EntityFrameworkCore.Pagination
AllOverIt.Pagination
AllOverIt.Serialization.Binary
AllOverIt
AllOverIt.Assertion
AllOverIt.Reactive
AllOverIt.Pipes

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:

AllOverIt.Validation.Options

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.

Last modified: 31 March 2024