ktsu.CredentialCache 1.2.3

Prefix Reserved
There is a newer prerelease version of this package available.
See the version list below for details.
dotnet add package ktsu.CredentialCache --version 1.2.3
                    
NuGet\Install-Package ktsu.CredentialCache -Version 1.2.3
                    
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="ktsu.CredentialCache" Version="1.2.3" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="ktsu.CredentialCache" Version="1.2.3" />
                    
Directory.Packages.props
<PackageReference Include="ktsu.CredentialCache" />
                    
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 ktsu.CredentialCache --version 1.2.3
                    
#r "nuget: ktsu.CredentialCache, 1.2.3"
                    
#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 ktsu.CredentialCache@1.2.3
                    
#: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=ktsu.CredentialCache&version=1.2.3
                    
Install as a Cake Addin
#tool nuget:?package=ktsu.CredentialCache&version=1.2.3
                    
Install as a Cake Tool

ktsu.CredentialCache

A secure credential storage and management system for .NET applications.

License NuGet NuGet Downloads Build Status GitHub Stars

Introduction

CredentialCache is a .NET library that provides a secure and convenient way to store, retrieve, and manage credentials in applications. It offers a flexible caching mechanism for various credential types while handling encryption, security, and persistence automatically.

Features

  • Secure Storage: Encrypts sensitive credentials using platform-specific security features
  • Memory Caching: Efficiently caches credentials in memory for quick access
  • Multiple Credential Types: Supports usernames/passwords, API keys, tokens, and certificates
  • Automatic Expiration: Time-based expiration for cached credentials
  • Credential Rotation: Support for credential rotation and refresh workflows
  • Thread Safety: Safe for concurrent access from multiple threads
  • Extensible: Easily extend with custom credential types and storage providers

Installation

Package Manager Console

Install-Package ktsu.CredentialCache

.NET CLI

dotnet add package ktsu.CredentialCache

Package Reference

<PackageReference Include="ktsu.CredentialCache" Version="x.y.z" />

Usage Examples

Basic Example

using ktsu.CredentialCache;

// Create a credential cache
var cache = new CredentialCache();

// Store a credential
var credential = new UsernamePasswordCredential
{
    Username = "user@example.com",
    Password = "securePassword123",
    Domain = "example.com"
};

cache.Store("myAppLogin", credential);

// Retrieve the credential later
if (cache.TryGet("myAppLogin", out UsernamePasswordCredential retrievedCredential))
{
    Console.WriteLine($"Retrieved username: {retrievedCredential.Username}");
    // Use the credential for authentication
}

Working with API Credentials

// Store an API key
var apiCredential = new ApiKeyCredential
{
    Key = "api_12345abcde",
    Secret = "apisecret_xyz789",
    Endpoint = "https://api.example.com"
};

// Store with expiration
cache.Store("apiAccess", apiCredential, TimeSpan.FromHours(1));

// Check if credential exists and is not expired
if (cache.Contains("apiAccess"))
{
    var cred = cache.Get<ApiKeyCredential>("apiAccess");
    // Use the API credential
}

Advanced Usage with Persistent Storage

// Create a cache with persistent storage
var options = new CredentialCacheOptions
{
    PersistToStorage = true,
    StoragePath = "credentials.dat",
    EncryptionLevel = EncryptionLevel.High
};

var persistentCache = new CredentialCache(options);

// Store a credential that will be saved to disk
var oauthCredential = new OAuthCredential
{
    AccessToken = "access_token_123",
    RefreshToken = "refresh_token_456",
    ExpiresAt = DateTimeOffset.UtcNow.AddHours(1)
};

persistentCache.Store("oauth", oauthCredential);

// Later, even after application restart:
var loadedCache = new CredentialCache(options);
if (loadedCache.TryGet("oauth", out OAuthCredential oauth))
{
    if (oauth.IsExpired)
    {
        // Refresh the token
        oauth = RefreshOAuthToken(oauth);
        loadedCache.Store("oauth", oauth);
    }
    
    // Use the OAuth token
}

API Reference

CredentialCache Class

The main class for storing and retrieving credentials.

Properties
Name Type Description
Count int Number of credentials in the cache
Options CredentialCacheOptions Configuration options for this cache instance
Methods
Name Return Type Description
Store(string key, ICredential credential, TimeSpan? expiration = null) void Stores a credential with optional expiration
Get<T>(string key) where T : ICredential T Gets a credential by key (throws if not found)
TryGet<T>(string key, out T credential) where T : ICredential bool Tries to get a credential by key
Remove(string key) bool Removes a credential from the cache
Contains(string key) bool Checks if a credential exists and is not expired
Clear() void Removes all credentials from the cache

Credential Types

Type Description
UsernamePasswordCredential Standard username and password combination
ApiKeyCredential API key and optional secret
OAuthCredential OAuth access and refresh tokens
CertificateCredential Certificate-based authentication

Contributing

Contributions are welcome! Here's how you can help:

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add some amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

Please ensure your code follows security best practices when dealing with sensitive credential information.

License

This project is licensed under the MIT License - see the LICENSE.md file for details.

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  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 is compatible.  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 was computed.  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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (2)

Showing the top 2 NuGet packages that depend on ktsu.CredentialCache:

Package Downloads
ktsu.ImGuiCredentialPopups

ImGuiCredentialPopups

ktsu.GitIntegration

Git Integration

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.2.4-pre.16 115 5/20/2025
1.2.4-pre.14 75 5/17/2025
1.2.4-pre.13 125 5/16/2025
1.2.4-pre.12 203 5/15/2025
1.2.4-pre.11 199 5/14/2025
1.2.4-pre.10 203 5/13/2025
1.2.4-pre.9 229 5/12/2025
1.2.4-pre.8 166 5/11/2025
1.2.4-pre.7 104 5/10/2025
1.2.4-pre.6 50 5/9/2025
1.2.4-pre.5 117 5/8/2025
1.2.4-pre.4 118 5/7/2025
1.2.4-pre.3 116 5/6/2025
1.2.4-pre.2 120 5/4/2025
1.2.4-pre.1 119 5/4/2025
1.2.3 323 5/4/2025
1.2.3-pre.1 54 4/26/2025
1.2.2 268 4/20/2025
1.2.2-pre.1 113 4/4/2025
1.2.1 302 3/30/2025
1.2.1-pre.3 77 3/29/2025
1.2.1-pre.2 457 3/25/2025
1.2.1-pre.1 72 2/18/2025
1.2.0 335 2/17/2025
1.1.1-pre.1 73 2/14/2025
1.1.0 145 2/12/2025
1.0.0 365 1/2/2025
1.0.0-pre.78 70 2/3/2025
1.0.0-pre.77 65 2/2/2025
1.0.0-pre.76 77 1/31/2025
1.0.0-pre.75 69 1/28/2025
1.0.0-pre.74 62 1/26/2025
1.0.0-pre.73 56 1/24/2025
1.0.0-pre.72 65 1/22/2025
1.0.0-pre.71 63 1/20/2025
1.0.0-pre.70 65 1/18/2025
1.0.0-pre.69 65 1/16/2025
1.0.0-pre.68 46 1/14/2025
1.0.0-pre.67 62 1/12/2025
1.0.0-pre.66 60 1/10/2025
1.0.0-pre.65 53 1/8/2025
1.0.0-pre.64 67 1/7/2025
1.0.0-pre.63 70 1/5/2025
1.0.0-pre.62 85 1/3/2025
1.0.0-pre.61 66 1/3/2025
1.0.0-pre.60 89 1/2/2025
1.0.0-pre.59 101 12/29/2024
1.0.0-alpha.58 97 12/26/2024
1.0.0-alpha.57 71 12/26/2024
1.0.0-alpha.56 62 12/26/2024
1.0.0-alpha.55 68 12/26/2024
1.0.0-alpha.54 60 12/26/2024
1.0.0-alpha.53 66 12/26/2024
1.0.0-alpha.52 69 12/26/2024
1.0.0-alpha.51 76 12/26/2024
1.0.0-alpha.50 81 12/25/2024
1.0.0-alpha.49 85 12/24/2024
1.0.0-alpha.48 82 12/23/2024
1.0.0-alpha.47 73 12/23/2024
1.0.0-alpha.46 66 12/23/2024
1.0.0-alpha.45 84 12/22/2024
1.0.0-alpha.44 70 12/22/2024
1.0.0-alpha.43 60 12/22/2024
1.0.0-alpha.42 70 12/22/2024
1.0.0-alpha.41 63 12/22/2024
1.0.0-alpha.40 97 12/19/2024
1.0.0-alpha.39 70 12/19/2024
1.0.0-alpha.38 85 12/18/2024
1.0.0-alpha.37 82 12/17/2024
1.0.0-alpha.36 85 12/16/2024
1.0.0-alpha.35 115 12/10/2024
1.0.0-alpha.34 88 12/9/2024
1.0.0-alpha.33 90 12/6/2024
1.0.0-alpha.32 93 12/5/2024
1.0.0-alpha.31 72 12/5/2024
1.0.0-alpha.30 123 12/2/2024
1.0.0-alpha.29 69 12/1/2024
1.0.0-alpha.28 75 12/1/2024
1.0.0-alpha.27 78 12/1/2024
1.0.0-alpha.26 76 11/30/2024
1.0.0-alpha.25 73 11/29/2024
1.0.0-alpha.24 91 11/28/2024
1.0.0-alpha.23 78 11/27/2024
1.0.0-alpha.22 83 11/26/2024
1.0.0-alpha.21 117 11/21/2024
1.0.0-alpha.20 86 11/20/2024
1.0.0-alpha.19 106 11/18/2024
1.0.0-alpha.18 81 11/15/2024
1.0.0-alpha.17 84 11/14/2024
1.0.0-alpha.16 96 11/13/2024
1.0.0-alpha.15 89 11/12/2024
1.0.0-alpha.14 102 11/11/2024
1.0.0-alpha.13 110 11/7/2024
1.0.0-alpha.12 81 11/6/2024
1.0.0-alpha.11 90 11/5/2024
1.0.0-alpha.10 85 11/4/2024
1.0.0-alpha.9 78 11/2/2024
1.0.0-alpha.8 77 11/1/2024
1.0.0-alpha.7 156 10/21/2024
1.0.0-alpha.6 110 10/18/2024
1.0.0-alpha.5 111 10/12/2024
1.0.0-alpha.4 80 10/12/2024
1.0.0-alpha.3 67 10/12/2024
1.0.0-alpha.2 69 10/12/2024
1.0.0-alpha.1 65 10/12/2024

## v1.2.3 (patch)

Changes since v1.2.2:

- Remove Directory.Build.props and Directory.Build.targets files; add copyright notices to CredentialCache files. ([@matt-edmondson](https://github.com/matt-edmondson))
- Enhance README with detailed project description, features, installation instructions, and usage examples. Update project SDK references in .csproj files for CredentialCache and its tests. ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.2.3-pre.1 (prerelease)

Changes since v1.2.2:

- Sync .editorconfig ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync .runsettings ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync .github\workflows\dotnet.yml ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.2.2 (patch)

Changes since v1.2.1:

- Remove Copilot instructions document ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.2.2-pre.1 (prerelease)

Incremental prerelease update.
## v1.2.1 (patch)

Changes since v1.2.0:

- Update packages ([@matt-edmondson](https://github.com/matt-edmondson))
- Add LICENSE template ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.2.1-pre.3 (prerelease)

Changes since v1.2.1-pre.2:

- Sync scripts\make-changelog.ps1 ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync scripts\make-version.ps1 ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.2.1-pre.2 (prerelease)

Changes since v1.2.1-pre.1:

- Sync .gitignore ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync .editorconfig ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync Directory.Build.targets ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync scripts\make-changelog.ps1 ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync scripts\make-version.ps1 ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.2.1-pre.1 (prerelease)

Incremental prerelease update.
## v1.2.0 (minor)

Changes since v1.1.0:

- Apply new editorconfig ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.1.1-pre.1 (prerelease)

Changes since v1.1.0:

- Bump the ktsu group with 3 updates ([@dependabot[bot]](https://github.com/dependabot[bot]))
## v1.1.0 (minor)

Changes since v1.0.0:

- Add mailmap ([@matt-edmondson](https://github.com/matt-edmondson))
- Make Create method public in ICredentialFactory<T> ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.0.0-alpha.58 (prerelease)

Changes since v1.0.0-alpha.57:

- Bump the ktsu group with 3 updates ([@dependabot[bot]](https://github.com/dependabot[bot]))
## v1.0.0-alpha.57 (prerelease)

Changes since v1.0.0-alpha.56:

- Sync icon.png ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.0.0-alpha.56 (prerelease)

Changes since v1.0.0-alpha.55:

- Sync Directory.Build.props ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.0.0-alpha.55 (prerelease)

Changes since v1.0.0-alpha.54:

- Sync Directory.Build.props ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.0.0-alpha.54 (prerelease)

Changes since v1.0.0-alpha.53:

- Sync Directory.Build.props ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.0.0-alpha.53 (prerelease)

Changes since v1.0.0-alpha.52:

- Replace LICENSE file with LICENSE.md and update copyright information ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.0.0-alpha.52 (prerelease)

Changes since v1.0.0-alpha.51:

- Sync Directory.Build.targets ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.0.0-alpha.51 (prerelease)

Changes since v1.0.0-alpha.50:

- Sync Directory.Build.props ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync Directory.Build.targets ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync icon.png ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync Directory.Build.props ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync Directory.Build.targets ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync Directory.Build.targets ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync Directory.Build.targets ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.0.0-alpha.50 (prerelease)

Changes since v1.0.0-alpha.49:

- Bump the ktsu group with 2 updates ([@dependabot[bot]](https://github.com/dependabot[bot]))
## v1.0.0-alpha.49 (prerelease)

Changes since v1.0.0-alpha.48:

- Bump the ktsu group with 3 updates ([@dependabot[bot]](https://github.com/dependabot[bot]))
## v1.0.0-alpha.48 (prerelease)

Changes since v1.0.0-alpha.47:

- Bump the ktsu group with 3 updates ([@dependabot[bot]](https://github.com/dependabot[bot]))
## v1.0.0-alpha.47 (prerelease)

Changes since v1.0.0-alpha.46:

- Sync .github\workflows\dotnet.yml ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.0.0-alpha.46 (prerelease)

Changes since v1.0.0-alpha.45:

- Sync .github\workflows\dotnet.yml ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.0.0-alpha.45 (prerelease)

Changes since v1.0.0-alpha.44:
## v1.0.0-alpha.44 (prerelease)

Changes since v1.0.0-alpha.43:
## v1.0.0-alpha.43 (prerelease)

Changes since v1.0.0-alpha.42:

- Sync Directory.Build.targets ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync Directory.Build.props ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.0.0-alpha.42 (prerelease)

Changes since v1.0.0-alpha.41:
## v1.0.0-alpha.41 (prerelease)

Changes since v1.0.0-alpha.40:

- Sync Directory.Build.targets ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync Directory.Build.props ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync Directory.Build.props ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync Directory.Build.targets ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync Directory.Build.targets ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync .github\workflows\dotnet.yml ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync .github\workflows\dotnet.yml ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Bump the ktsu group with 3 updates ([@dependabot[bot]](https://github.com/dependabot[bot]))
## v1.0.0-alpha.40 (prerelease)

Changes since v1.0.0-alpha.39:

- Update VERSION to 1.0.0-alpha.40 ([@matt-edmondson](https://github.com/matt-edmondson))
- Bump the ktsu group with 3 updates ([@dependabot[bot]](https://github.com/dependabot[bot]))
## v1.0.0-alpha.39 (prerelease)

Changes since v1.0.0-alpha.38:

- Update VERSION to 1.0.0-alpha.39 ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.0.0-alpha.38 (prerelease)

Changes since v1.0.0-alpha.37:

- Update VERSION to 1.0.0-alpha.38 ([@matt-edmondson](https://github.com/matt-edmondson))
- Bump the ktsu group with 3 updates ([@dependabot[bot]](https://github.com/dependabot[bot]))
## v1.0.0-alpha.37 (prerelease)

Changes since v1.0.0-alpha.36:

- Bump the ktsu group with 3 updates ([@dependabot[bot]](https://github.com/dependabot[bot]))
- Update VERSION to 1.0.0-alpha.37 ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.0.0-alpha.36 (prerelease)

Changes since v1.0.0-alpha.35:

- Update VERSION to 1.0.0-alpha.36 ([@matt-edmondson](https://github.com/matt-edmondson))
- Bump the ktsu group with 2 updates ([@dependabot[bot]](https://github.com/dependabot[bot]))
## v1.0.0-alpha.35 (prerelease)

Changes since v1.0.0-alpha.34:

- Update VERSION to 1.0.0-alpha.35 ([@matt-edmondson](https://github.com/matt-edmondson))
- Bump the ktsu group with 3 updates ([@dependabot[bot]](https://github.com/dependabot[bot]))
## v1.0.0-alpha.34 (prerelease)

Changes since v1.0.0-alpha.33:

- Update VERSION to 1.0.0-alpha.34 ([@matt-edmondson](https://github.com/matt-edmondson))
- Bump the ktsu group with 3 updates ([@dependabot[bot]](https://github.com/dependabot[bot]))
## v1.0.0-alpha.33 (prerelease)

Changes since v1.0.0-alpha.32:

- Update VERSION to 1.0.0-alpha.33 ([@matt-edmondson](https://github.com/matt-edmondson))
- Bump the ktsu group with 2 updates ([@dependabot[bot]](https://github.com/dependabot[bot]))
## v1.0.0-alpha.32 (prerelease)

Changes since v1.0.0-alpha.31:

- Update VERSION to 1.0.0-alpha.32 ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.0.0-alpha.31 (prerelease)

Changes since v1.0.0-alpha.30:

- Bump MSTest.TestAdapter from 3.6.3 to 3.6.4 ([@dependabot[bot]](https://github.com/dependabot[bot]))
- Bump MSTest.TestFramework from 3.6.3 to 3.6.4 ([@dependabot[bot]](https://github.com/dependabot[bot]))
- Bump the ktsu group with 3 updates ([@dependabot[bot]](https://github.com/dependabot[bot]))
- Update VERSION to 1.0.0-alpha.31 ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.0.0-alpha.30 (prerelease)

Changes since v1.0.0-alpha.29:

- Sync Directory.Build.targets ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Update VERSION to 1.0.0-alpha.30 ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.0.0-alpha.29 (prerelease)

Changes since v1.0.0-alpha.28:

- Update ktsu.AppDataStorage and ktsu.StrongPaths package references to latest versions ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.0.0-alpha.28 (prerelease)

Changes since v1.0.0-alpha.27:

- Update ktsu.StrongPaths package reference to version 1.1.30 ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.0.0-alpha.27 (prerelease)

Changes since v1.0.0-alpha.26:

- Update package references to latest versions ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.0.0-alpha.26 (prerelease)

Changes since v1.0.0-alpha.25:

- Update VERSION to 1.0.0-alpha.26 ([@matt-edmondson](https://github.com/matt-edmondson))
- Sync Directory.Build.props ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.0.0-alpha.25 (prerelease)

Changes since v1.0.0-alpha.24:

- Update VERSION to 1.0.0-alpha.25 ([@matt-edmondson](https://github.com/matt-edmondson))
- Bump the ktsu group with 3 updates ([@dependabot[bot]](https://github.com/dependabot[bot]))
## v1.0.0-alpha.24 (prerelease)

Changes since v1.0.0-alpha.23:

- Update VERSION to 1.0.0-alpha.24 ([@matt-edmondson](https://github.com/matt-edmondson))
- Bump the ktsu group with 3 updates ([@dependabot[bot]](https://github.com/dependabot[bot]))
## v1.0.0-alpha.23 (prerelease)

Changes since v1.0.0-alpha.22:

- Update VERSION to 1.0.0-alpha.23 ([@matt-edmondson](https://github.com/matt-edmondson))
- Bump the ktsu group with 3 updates ([@dependabot[bot]](https://github.com/dependabot[bot]))
## v1.0.0-alpha.22 (prerelease)

Changes since v1.0.0-alpha.21:

- Sync Directory.Build.props ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Update VERSION to 1.0.0-alpha.22 ([@matt-edmondson](https://github.com/matt-edmondson))
- Sync Directory.Build.targets ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.0.0-alpha.21 (prerelease)

Changes since v1.0.0-alpha.20:

- Bump the ktsu group with 3 updates ([@dependabot[bot]](https://github.com/dependabot[bot]))
- Update VERSION to 1.0.0-alpha.21 ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.0.0-alpha.20 (prerelease)

Changes since v1.0.0-alpha.19:

- Bump the ktsu group with 3 updates ([@dependabot[bot]](https://github.com/dependabot[bot]))
- Update VERSION to 1.0.0-alpha.20 ([@matt-edmondson](https://github.com/matt-edmondson))
- Bump Microsoft.NET.Test.Sdk in the microsoft group ([@dependabot[bot]](https://github.com/dependabot[bot]))
## v1.0.0-alpha.19 (prerelease)

Changes since v1.0.0-alpha.18:

- Bump the ktsu group with 3 updates ([@dependabot[bot]](https://github.com/dependabot[bot]))
- Update VERSION to 1.0.0-alpha.19 ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.0.0-alpha.18 (prerelease)

Changes since v1.0.0-alpha.17:

- Bump the ktsu group with 3 updates ([@dependabot[bot]](https://github.com/dependabot[bot]))
- Update VERSION to 1.0.0-alpha.18 ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.0.0-alpha.17 (prerelease)

Changes since v1.0.0-alpha.16:

- Update VERSION to 1.0.0-alpha.17 ([@matt-edmondson](https://github.com/matt-edmondson))
- Bump the ktsu group with 3 updates ([@dependabot[bot]](https://github.com/dependabot[bot]))
- Bump MSTest.TestFramework from 3.6.2 to 3.6.3 ([@dependabot[bot]](https://github.com/dependabot[bot]))
## v1.0.0-alpha.16 (prerelease)

Changes since v1.0.0-alpha.15:

- Update VERSION to 1.0.0-alpha.16 ([@matt-edmondson](https://github.com/matt-edmondson))
- Bump MSTest.TestAdapter from 3.6.2 to 3.6.3 ([@dependabot[bot]](https://github.com/dependabot[bot]))
- Bump the ktsu group with 3 updates ([@dependabot[bot]](https://github.com/dependabot[bot]))
## v1.0.0-alpha.15 (prerelease)

Changes since v1.0.0-alpha.14:

- Update VERSION to 1.0.0-alpha.15 ([@matt-edmondson](https://github.com/matt-edmondson))
- Bump the ktsu group with 3 updates ([@dependabot[bot]](https://github.com/dependabot[bot]))
## v1.0.0-alpha.14 (prerelease)

Changes since v1.0.0-alpha.13:

- Update VERSION to 1.0.0-alpha.14 ([@matt-edmondson](https://github.com/matt-edmondson))
- Bump the ktsu group with 3 updates ([@dependabot[bot]](https://github.com/dependabot[bot]))
## v1.0.0-alpha.13 (prerelease)

Changes since v1.0.0-alpha.12:

- Update VERSION to 1.0.0-alpha.13 ([@matt-edmondson](https://github.com/matt-edmondson))
- Bump the ktsu group with 3 updates ([@dependabot[bot]](https://github.com/dependabot[bot]))
## v1.0.0-alpha.12 (prerelease)

Changes since v1.0.0-alpha.11:

- Update VERSION to 1.0.0-alpha.12 ([@matt-edmondson](https://github.com/matt-edmondson))
- Bump the ktsu group with 3 updates ([@dependabot[bot]](https://github.com/dependabot[bot]))
## v1.0.0-alpha.11 (prerelease)

Changes since v1.0.0-alpha.10:

- Bump the ktsu group with 3 updates ([@dependabot[bot]](https://github.com/dependabot[bot]))
- Update VERSION to 1.0.0-alpha.11 ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.0.0-alpha.10 (prerelease)

Changes since v1.0.0-alpha.9:

- Bump the ktsu group with 3 updates ([@dependabot[bot]](https://github.com/dependabot[bot]))
- Update VERSION to 1.0.0-alpha.10 ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.0.0-alpha.9 (prerelease)

Changes since v1.0.0-alpha.8:

- Bump MSTest.TestFramework from 3.6.1 to 3.6.2 ([@dependabot[bot]](https://github.com/dependabot[bot]))
- Update VERSION to 1.0.0-alpha.9 ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.0.0-alpha.8 (prerelease)

Changes since v1.0.0-alpha.7:

- Update VERSION to 1.0.0-alpha.8 ([@matt-edmondson](https://github.com/matt-edmondson))
- Bump MSTest.TestAdapter from 3.6.1 to 3.6.2 ([@dependabot[bot]](https://github.com/dependabot[bot]))
## v1.0.0-alpha.7 (prerelease)

Changes since v1.0.0-alpha.6:

- Bump ktsu.AppDataStorage from 1.1.19 to 1.1.20 in the ktsu group ([@dependabot[bot]](https://github.com/dependabot[bot]))
- Update VERSION to 1.0.0-alpha.7 ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.0.0-alpha.6 (prerelease)

Changes since v1.0.0-alpha.5:

- Update VERSION to 1.0.0-alpha.6 ([@matt-edmondson](https://github.com/matt-edmondson))
- Bump ktsu.StrongPaths from 1.1.16 to 1.1.17 in the ktsu group ([@dependabot[bot]](https://github.com/dependabot[bot]))
## v1.0.0-alpha.5 (prerelease)

Changes since v1.0.0-alpha.4:

- Renames to remove references to git ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.0.0-alpha.4 (prerelease)

Changes since v1.0.0-alpha.3:

- Add a way to register credential factories ([@matt-edmondson](https://github.com/matt-edmondson))
- Add credential factories ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.0.0-alpha.3 (prerelease)

Changes since v1.0.0-alpha.1:

- Update VERSION ([@matt-edmondson](https://github.com/matt-edmondson))
- Update VERSION to 1.0.0-alpha.3 ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.0.0-alpha.1 (prerelease)

Incremental prerelease update.

## v1.0.0-pre.78 (prerelease)

Changes since v1.0.0-pre.77:

- Sync .github\workflows\dotnet.yml ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.0.0-pre.77 (prerelease)

Changes since v1.0.0-pre.76:
## v1.0.0-pre.76 (prerelease)

Changes since v1.0.0-pre.75:
## v1.0.0-pre.75 (prerelease)

Changes since v1.0.0-pre.74:

- Bump MSTest from 3.7.2 to 3.7.3 ([@dependabot[bot]](https://github.com/dependabot[bot]))
## v1.0.0-pre.74 (prerelease)

Changes since v1.0.0-pre.73:
## v1.0.0-pre.73 (prerelease)

Changes since v1.0.0-pre.72:
## v1.0.0-pre.72 (prerelease)

Changes since v1.0.0-pre.71:

- Bump MSTest from 3.7.1 to 3.7.2 ([@dependabot[bot]](https://github.com/dependabot[bot]))
## v1.0.0-pre.71 (prerelease)

Changes since v1.0.0-pre.70:

- Bump coverlet.collector from 6.0.3 to 6.0.4 ([@dependabot[bot]](https://github.com/dependabot[bot]))
## v1.0.0-pre.70 (prerelease)

Changes since v1.0.0-pre.69:
## v1.0.0-pre.69 (prerelease)

Changes since v1.0.0-pre.68:
## v1.0.0-pre.68 (prerelease)

Changes since v1.0.0-pre.67:

- Bump MSTest from 3.7.0 to 3.7.1 ([@dependabot[bot]](https://github.com/dependabot[bot]))
## v1.0.0-pre.67 (prerelease)

Changes since v1.0.0-pre.66:
## v1.0.0-pre.66 (prerelease)

Changes since v1.0.0-pre.65:

- Sync .github\workflows\dotnet.yml ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync scripts\make-version.ps1 ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync scripts\make-changelog.ps1 ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.0.0-pre.65 (prerelease)

Changes since v1.0.0-pre.64:
## v1.0.0-pre.64 (prerelease)

Changes since v1.0.0-pre.63:

- Sync .github\workflows\dotnet.yml ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.0.0-pre.63 (prerelease)

Changes since v1.0.0-pre.62:
## v1.0.0-pre.62 (prerelease)

Changes since v1.0.0-pre.61:

- Bump the ktsu group with 3 updates ([@dependabot[bot]](https://github.com/dependabot[bot]))
- Sync scripts\make-version.ps1 ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync .mailmap ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.0.0-pre.61 (prerelease)

Changes since v1.0.0-pre.60:

- Add automation scripts for metadata and version management ([@matt-edmondson](https://github.com/matt-edmondson))
- Add mailmap ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.0.0-pre.60 (prerelease)

Changes since v1.0.0-pre.59:

- Bump ktsu.StrongStrings from 1.2.25 to 1.2.26 in the ktsu group ([@dependabot[bot]](https://github.com/dependabot[bot]))
- Bump coverlet.collector from 6.0.2 to 6.0.3 ([@dependabot[bot]](https://github.com/dependabot[bot]))
- Bump the ktsu group with 3 updates ([@dependabot[bot]](https://github.com/dependabot[bot]))
## v1.0.0-pre.59 (prerelease)

Incremental prerelease update.