Third Party Libraries - JerrettDavis/FolderProcessor Wiki


We're huge proponents for not reinventing the wheel. As such, the project's stance on third-party libraries is pretty lax. If better solutions already exist for a piece of functionality we wish to implement, by all means, use a battle-test third party library. By that same token, if a piece of functionality is trivially implemented, there is no reason to introduce a library to do it.

Libraries Used


This library is a part of AutoFixture, and it leverages Moq to create mocks of classes for unit tests.

Used In: FolderProcessor.UnitTests


This library is a part of AutoFixture, and it is used to aid in dynamically creating mock data and dependencies for unit tests.

Used In: FolderProcessor.UnitTests


Coverlet is a library used for generating coverage reports for unit tests. coverlet.collector includes VSTest integrations for the coverlet library. This is used to generate coverage report runs.

Used In: FolderProcessor.UnitTests


FluentAssertions contains tons of extension methods that makes writing unit tests more natural and readable.

Used In: FolderProcessor.UnitTests


The library contains several attributes that make class intentions more explicit, without changing any of the functionality of the application. They are primarily used for IDE hints.

Used In: All Projects


MediatR is a simple, flexible mediator implementation that underpins the vast majority of the application functionality. Mediator helps decouple definitions from their handlers, and makes writing testable, scalable, and extensible code much easier.

Used In: FolderProcessor, FolderProcessor.Host


Provides the contracts that underpin MediatR. These are used to build the application's internal handlers.

Used In: FolderProcessor.Abstractions, FolderProcessor.Models


Used to configure the FolderProcessor host. The library wires up all of Mediatr's internal dependencies, and adds all our handlers to its internal handler.

Used In: FolderProcessor.Extensions.Microsoft.DependencyInjection


Used to pass configuration settings into the application startup extensions.

Used In: FolderProcessor.Extensions.Microsoft.DependencyInjection


Used to translate IConfiguration to internal application models.

Used In: FolderProcessor.Extensions.Microsoft.DependencyInjection


Used to provide dependency injection abstractions to the application startup extensions.

Used In: FolderProcessor.Extensions.Microsoft.DependencyInjection


Used to setup the example worker used in the demo application.

Used In: FolderProcessor.Host


Used to provide logging interfaces throughout the application.

Used In: FolderProcessor


Used to run the tests for the application.

Used In: FolderProcessor.UnitTests


Moq is a mocking framework for .Net that simplifies creating functional mocked objects for unit tests.

Used In: FolderProcessor.UnitTests


Polly is a resilience library, used for adding retry, circuit breaker, timeout, and other behaviors to a process. It's used to retry processes in the application that may have failed due to external factors.

Used In: FolderProcessor


This library is a part of the dotnet\reactive extensions. It enables us to work with asynchronous streams in a reactive, event-based way.

Used In: FolderProcessor


Provides an abstraction layer over System.IO. This is heavily used to abstract away filesystem operations for unit testing.

Used In: FolderProcessor


Contains test objects to help facilitate filesystem testing.

Used In: FolderProcessor.UnitTests


The unit test framework used in the library.

Used In: FolderProcessor.UnitTests


Provides Visual Studio integration for XUnit.

Used In: FolderProcessor.UnitTests