Home of UtilPack - library with various useful and generic stuff for .NET Desktop and Core, and also for managing NuGet packages and assemblies.
There are currently 21 projects in UtilPack repository, with 1 being project for (currently small amount of) tests. Each of the remaining 20 projects is its own NuGet package, with the NuGet package ID being the project assembly name. The amount of projects to handle infrastructure and various assembly-loading aspects when working with NuGet packages is 8 (all of UtilPack.NuGet.* projects). The rest of the projects fall under the broad "miscellaneous" category.
This package contains the most generic and all-round useful extension methods, interfaces, and classes.
This package contains API and full implementation for enumerating asynchronous enumerables, which are currently still under design to get to C# itself.
This small package contains class which uses given callback to recursively load instances of types contained in configuration describing assemblies and type names to load.
This small package contains API and skeleton implementation for various aspects of cryptography, since they are lacking in e.g. .NET Standard 1.0.
This package contains API and implementation for most commonly used digest algorithms (SHA-128,256,384, and 512), as well as concrete implementation for digest-based random data generator API in UtilPack.Cryptography package.
This package contains implementation that uses (de)serialization types in UtilPack package in order to (de)serialize JSON objects.
This small package contains one class, AsyncExecTask
, which extends Exec MSBuild task to start a process but doesn't wait for it to terminate.
This package contains ProcessMonitor
class, which can be used to start and monitor other processes, with a support of graceful shutdown and restart.
This package contains API and implementation for pooling and using the pool of asynchronous and synchronous resources.
This package contains abstract task type acting as a bridge between UtilPack.ResourcePooling project and custom MSBuild tasks.
This package contains factory and configuration for async resource pools serving System.IO.Stream
operating on System.Net.Sockets.Socket
, with out-of-the-box configurable SSL functionality.
This package contains API and skeleton implementation for data which is in tabular format, meaning it has rows and columns.
This package contains classes and methods that make life easier when working with NuGet library, most notably this package has BoundRestoreCommandUser
to easily restore packages on local machine.
This package contains API and implementation for NuGet package -based assembly loader, which can operate in both .NET Desktop and Core environments.
This package contains utilities usually used in MSBuild tasks which operate with NuGet packages, e.g. logger class which will relay all NuGet log messages to MSBuild's IBuildEngine
.
This package contains NuGetDeployment
class which will deploy an assembly from NuGet package so that it could be executed by .NET (Desktop or Core) environment (by restoring packages and generating .deps.json
file or copying all referenced assemblies into target folder).
This package wraps the functionality of UtilPack.NuGet.Deployment package into MSBuild task.
This package contains a MSBuild task factory, which will restore and execute MSBuild tasks located in given NuGet packages, dynamically loading dependencies (assemblies from other NuGet packages) on-the-fly as needed.
This package deploys a NuGet package (restoring it if needed), and executes entrypoint assembly as .NET process, combining functionality of UtilPack.NuGet.Deployment and UtilPack.ProcessMonitor packages.
This package provides functionality of PushRunner.Run
method of the NuGet library as MSBuild task, which can be integrated into build process to automatically push package on every build.
UtilPack is designed to be extremely portable. Currently, most of the projects target .NET 4 and .NET Standard 1.0.
One of the most important thing to be done is adding proper unit tests for all the code. Due to a bit too hasty development model, and the ancientness of the project (back when making unit tests in VS wasn't as simple as it is now, in 2017), there are no unit tests that would test just the code of UtilPack. Thus the tests are something that need to be added very soon.