CodeBrix.Platform.Extensions.ApacheLicenseForever 1.0.254.219

dotnet add package CodeBrix.Platform.Extensions.ApacheLicenseForever --version 1.0.254.219
                    
NuGet\Install-Package CodeBrix.Platform.Extensions.ApacheLicenseForever -Version 1.0.254.219
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="CodeBrix.Platform.Extensions.ApacheLicenseForever" Version="1.0.254.219" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="CodeBrix.Platform.Extensions.ApacheLicenseForever" Version="1.0.254.219" />
                    
Directory.Packages.props
<PackageReference Include="CodeBrix.Platform.Extensions.ApacheLicenseForever" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add CodeBrix.Platform.Extensions.ApacheLicenseForever --version 1.0.254.219
                    
#r "nuget: CodeBrix.Platform.Extensions.ApacheLicenseForever, 1.0.254.219"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package CodeBrix.Platform.Extensions.ApacheLicenseForever@1.0.254.219
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=CodeBrix.Platform.Extensions.ApacheLicenseForever&version=1.0.254.219
                    
Install as a Cake Addin
#tool nuget:?package=CodeBrix.Platform.Extensions.ApacheLicenseForever&version=1.0.254.219
                    
Install as a Cake Tool

CodeBrix.Platform.Extensions

A .NET Standard 2.0 and .NET 10 helper library for CodeBrix.Platform and its consumers — general extensions, collections, disposables, equality comparers, logging helpers, and threading primitives, all under the CodeBrix.Platform.Extensions.* namespaces. CodeBrix.Platform.Extensions is provided as a .NET library and associated CodeBrix.Platform.Extensions.ApacheLicenseForever NuGet package.

CodeBrix.Platform.Extensions supports applications and assemblies that target Microsoft .NET version 10.0 and later. Microsoft .NET version 10.0 is a Long-Term Supported (LTS) version of .NET, and was released on Nov 11, 2025; and will be actively supported by Microsoft until Nov 14, 2028. Please update your C#/.NET code and projects to the latest LTS version of Microsoft .NET.

The package also carries a .NET Standard 2.0 target. That target exists for one specific reason: Roslyn source generators and analyzers are loaded by the compiler and must be built against netstandard2.0, so this target lets a generator or analyzer project consume these helpers. It is not general downlevel support — for ordinary applications and libraries, target .NET 10.

Installation

dotnet add package CodeBrix.Platform.Extensions.ApacheLicenseForever

Note that the NuGet package ID and the namespace are different - there is no package named plain CodeBrix.Platform.Extensions:

  • NuGet package ID: CodeBrix.Platform.Extensions.ApacheLicenseForever
  • Assembly and root namespace: CodeBrix.Platform.Extensions - i.e. using CodeBrix.Platform.Extensions;

Never write using CodeBrix.Platform.Extensions.ApacheLicenseForever; — that namespace does not exist. The suffix is a CodeBrix family convention that records the license the package will always be published under.

The package pulls in the following automatically; no version pinning is needed in the consuming project:

  • CodeBrix.ServiceLocator.MsplLicenseForever - used only by the logging singleton. Note the spelling: the package id says ServiceLocator, but the namespace it provides is CodeBrix.ServiceLocation.
  • Microsoft.Extensions.Logging - the ILogger abstractions the logging helpers extend.
  • On the .NET Standard 2.0 target only, the polyfill packages for what .NET 10 has in-box: System.Collections.Immutable, System.Memory and System.Threading.Tasks.Extensions.

CodeBrix.Platform.Extensions supports:

  • General extensions (CodeBrix.Platform.Extensions) — string/func/action/enum/stream/URI/date helpers, memoization, currying, async action helpers.
  • Collections (CodeBrix.Platform.Extensions.Collections, .Specialized) — enumerable/list/dictionary/queue/stack extensions, observable-collection update helpers, weak attached dictionaries.
  • Disposables (CodeBrix.Platform.Extensions.Disposables) — CompositeDisposable, SerialDisposable, RefCountDisposable, AnonymousDisposable, NullDisposable, and related helpers.
  • Equality (CodeBrix.Platform.Extensions.Equality, .Comparison, .Core.*) — func/key/collection equality comparers and fast type comparison.
  • Logging (CodeBrix.Platform.Extensions.Logging) — ILogger-based logging extension helpers and the singleton LogExtensionPoint.
  • Threading (CodeBrix.Platform.Extensions.Threading) — FastAsyncLock, FastTaskCompletionSource, AsyncEvent, and Transactional immutable-update helpers.

Sample Code

Compose disposables

using CodeBrix.Platform.Extensions.Disposables;

var subscriptions = new CompositeDisposable();
subscriptions.Add(Disposable.Create(() => Console.WriteLine("cleaned up")));
subscriptions.Dispose();

Async lock

using CodeBrix.Platform.Extensions.Threading;

var gate = new FastAsyncLock();
using (await gate.LockAsync(cancellationToken))
{
    // critical section
}

Bootstrap the logging singleton

LogExtensionPoint and the .Log() extension methods live in the root CodeBrix.Platform.Extensions namespace. Assign the ambient factory once at startup, before anything calls .Log():

using CodeBrix.Platform.Extensions;   //LogExtensionPoint and the .Log() extensions
using Microsoft.Extensions.Logging;   //ILoggerFactory, ILogger

LogExtensionPoint.AmbientLoggerFactory = myLoggerFactory;   //any ILoggerFactory

//...afterwards, from any instance - or from a Type
this.Log().LogInformation("Ready.");

.Log() never throws for want of configuration: with no factory assigned it falls back to a LoggerFactory with no providers, so every message is silently dropped. "No output" is the failure mode, not an exception. The alternative bootstrap is to set a CodeBrix.ServiceLocation provider that can resolve ILoggerFactory; the direct assignment above needs no service locator at all. Either way, do it once — the per-type logger is cached the first time .Log() is called for that type.

Documentation

The NuGet package includes AGENT-README.txt, a complete API reference and usage guide written for AI coding agents - point your agent at that file when it is writing code against this library. It is worth reading for one thing in particular: the folder layout inside the assembly does not match the namespaces, so the AGENT-README's namespace-by-namespace type listing is the fastest way to find a helper.

Additional sample code and usage examples are available in the CodeBrix.Platform.Extensions.Tests project: https://github.com/ellisnet/CodeBrix.Platform.Extensions/tree/main/tests/CodeBrix.Platform.Extensions.Tests

License

CodeBrix.Platform.Extensions is licensed under the Apache License, Version 2.0 - see the LICENSE file. The package is published under the SPDX expression Apache-2.0.

For licensing and provenance information about the open source code included in this package, see THIRD-PARTY-NOTICES.txt.

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 was computed. 
.NET Framework net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.0.254.219 47 9/11/2026
1.0.242.1075 188 8/30/2026
1.0.165.1317 131 6/14/2026
1.0.165.1275 120 6/14/2026
1.0.165.976 116 6/14/2026