ktsu.ScopedAction
1.1.2
Prefix Reserved
See the version list below for details.
dotnet add package ktsu.ScopedAction --version 1.1.2
NuGet\Install-Package ktsu.ScopedAction -Version 1.1.2
<PackageReference Include="ktsu.ScopedAction" Version="1.1.2" />
<PackageVersion Include="ktsu.ScopedAction" Version="1.1.2" />
<PackageReference Include="ktsu.ScopedAction" />
paket add ktsu.ScopedAction --version 1.1.2
#r "nuget: ktsu.ScopedAction, 1.1.2"
#addin nuget:?package=ktsu.ScopedAction&version=1.1.2
#tool nuget:?package=ktsu.ScopedAction&version=1.1.2
ktsu.ScopedAction
A lightweight utility for executing paired actions at the start and end of code blocks.
Introduction
ktsu.ScopedAction
is a .NET utility that provides a clean way to execute actions at the beginning and end of code blocks. It leverages C#'s using
statement and the IDisposable
pattern to ensure that paired operations (like resource acquisition/release, state changes, or logging) are properly executed, even in the presence of exceptions.
Features
- Paired Actions: Execute actions when entering and exiting a scope
- Exception Safety: Cleanup actions execute even if exceptions occur
- Lightweight: Simple API with minimal overhead
- Flexible: Works with any action delegates
- Extendable: Can be subclassed for specialized behaviors
- Resource Management: Follows .NET's standard disposal pattern
Installation
Package Manager Console
Install-Package ktsu.ScopedAction
.NET CLI
dotnet add package ktsu.ScopedAction
Package Reference
<PackageReference Include="ktsu.ScopedAction" Version="x.y.z" />
Usage Examples
Basic Example
using ktsu.ScopedAction;
// Execute actions at the beginning and end of a scope
using (new ScopedAction(
onOpen: () => Console.WriteLine("Entering the scope"),
onClose: () => Console.WriteLine("Exiting the scope")))
{
// Any code here...
Console.WriteLine("Inside the scope");
}
// Output:
// Entering the scope
// Inside the scope
// Exiting the scope
Resource Management
// Manage resources with paired acquisition and release
public void ProcessFile(string filePath)
{
using (new ScopedAction(
onOpen: () => Console.WriteLine($"Opening file: {filePath}"),
onClose: () => Console.WriteLine($"Closing file: {filePath}")))
{
// Process the file...
Console.WriteLine("Processing file contents");
}
}
Measuring Performance
// Measure and log execution time of operations
public void TimedOperation()
{
var stopwatch = new Stopwatch();
using (new ScopedAction(
onOpen: () => stopwatch.Start(),
onClose: () => {
stopwatch.Stop();
Console.WriteLine($"Operation completed in {stopwatch.ElapsedMilliseconds}ms");
}))
{
// Operation to be timed
PerformComplexCalculation();
}
}
Advanced Usage
Temporary State Changes
// Temporarily change application state
private bool _isProcessing;
public void ProcessWithState()
{
using (new ScopedAction(
onOpen: () => _isProcessing = true,
onClose: () => _isProcessing = false))
{
// Code that requires _isProcessing to be true
PerformProcessing();
}
// _isProcessing is automatically reset to false here
}
Creating Custom ScopedAction Classes
// Create specialized scoped actions by extending the base class
public class LoggingScope : ScopedAction
{
private readonly string _operationName;
private readonly ILogger _logger;
public LoggingScope(string operationName, ILogger logger)
{
_operationName = operationName;
_logger = logger;
_logger.LogInformation($"Starting operation: {_operationName}");
}
protected override void Dispose(bool disposing)
{
if (disposing)
{
_logger.LogInformation($"Completed operation: {_operationName}");
}
base.Dispose(disposing);
}
}
// Usage
using (new LoggingScope("Data Import", logger))
{
// Import data...
}
API Reference
ScopedAction Class
The primary class for executing actions at scope boundaries.
Constructors
Constructor | Parameters | Description |
---|---|---|
ScopedAction(Action? onOpen, Action? onClose) |
onOpen : Action executed on construction<br>onClose : Action executed on disposal |
Creates a new ScopedAction that executes the specified actions |
ScopedAction() |
None | Protected constructor for derived classes |
Methods
Method | Return Type | Description |
---|---|---|
Dispose() |
void |
Executes the onClose action if not already disposed |
Dispose(bool disposing) |
void |
Protected virtual method for implementing the dispose pattern |
Contributing
Contributions are welcome! Here's how you can help:
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add some amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
Please make sure to update tests as appropriate.
License
This project is licensed under the MIT License - see the LICENSE.md file for details.
Product | Versions 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. |
-
net8.0
- No dependencies.
-
net9.0
- No dependencies.
NuGet packages (5)
Showing the top 5 NuGet packages that depend on ktsu.ScopedAction:
Package | Downloads |
---|---|
ktsu.ImGuiStyler
A library for expressively styling ImGui.NET interfaces. |
|
ktsu.ImGuiApp
A .NET library that provides application scaffolding for Dear ImGui, using Silk.NET and ImGui.NET. |
|
ktsu.ImGuiWidgets
A library of custom widgets using ImGui.NET and utilities to enhance ImGui-based applications. |
|
ktsu.ImGuiPopups
A library for custom popups using ImGui.NET. |
|
ktsu.DelegateTransform
A utility library for transforming values using delegates |
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last Updated |
---|---|---|
1.1.3-pre.17 | 113 | 5/20/2025 |
1.1.3-pre.15 | 73 | 5/17/2025 |
1.1.3-pre.14 | 124 | 5/16/2025 |
1.1.3-pre.13 | 186 | 5/15/2025 |
1.1.3-pre.12 | 189 | 5/14/2025 |
1.1.3-pre.11 | 193 | 5/13/2025 |
1.1.3-pre.10 | 227 | 5/12/2025 |
1.1.3-pre.9 | 157 | 5/11/2025 |
1.1.3-pre.8 | 108 | 5/10/2025 |
1.1.3-pre.7 | 51 | 5/9/2025 |
1.1.3-pre.6 | 114 | 5/8/2025 |
1.1.3-pre.5 | 113 | 5/7/2025 |
1.1.3-pre.4 | 119 | 5/6/2025 |
1.1.3-pre.3 | 117 | 5/5/2025 |
1.1.3-pre.2 | 118 | 5/4/2025 |
1.1.3-pre.1 | 119 | 5/4/2025 |
1.1.2 | 405 | 5/4/2025 |
1.1.2-pre.1 | 52 | 4/26/2025 |
1.1.1 | 592 | 4/25/2025 |
1.1.1-pre.1 | 116 | 4/4/2025 |
1.1.0 | 1,222 | 3/30/2025 |
1.0.16-pre.2 | 72 | 3/29/2025 |
1.0.16-pre.1 | 454 | 3/25/2025 |
1.0.15 | 1,846 | 2/17/2025 |
1.0.15-pre.3 | 76 | 2/6/2025 |
1.0.15-pre.2 | 73 | 2/5/2025 |
1.0.15-pre.1 | 63 | 2/5/2025 |
1.0.14 | 2,402 | 12/27/2024 |
1.0.14-pre.28 | 65 | 2/3/2025 |
1.0.14-pre.27 | 62 | 2/3/2025 |
1.0.14-pre.26 | 65 | 2/1/2025 |
1.0.14-pre.25 | 64 | 1/30/2025 |
1.0.14-pre.24 | 57 | 1/28/2025 |
1.0.14-pre.23 | 65 | 1/26/2025 |
1.0.14-pre.22 | 57 | 1/24/2025 |
1.0.14-pre.21 | 62 | 1/22/2025 |
1.0.14-pre.20 | 59 | 1/20/2025 |
1.0.14-pre.19 | 56 | 1/18/2025 |
1.0.14-pre.18 | 52 | 1/16/2025 |
1.0.14-pre.17 | 40 | 1/14/2025 |
1.0.14-pre.16 | 62 | 1/13/2025 |
1.0.14-pre.15 | 59 | 1/11/2025 |
1.0.14-pre.14 | 57 | 1/10/2025 |
1.0.14-pre.13 | 62 | 1/10/2025 |
1.0.14-pre.12 | 50 | 1/8/2025 |
1.0.14-pre.11 | 66 | 1/7/2025 |
1.0.14-pre.10 | 65 | 1/6/2025 |
1.0.14-pre.9 | 85 | 1/4/2025 |
1.0.14-pre.8 | 70 | 1/3/2025 |
1.0.14-pre.7 | 71 | 1/3/2025 |
1.0.14-pre.6 | 68 | 1/3/2025 |
1.0.14-pre.5 | 76 | 1/2/2025 |
1.0.14-pre.4 | 90 | 12/31/2024 |
1.0.14-pre.3 | 66 | 12/29/2024 |
1.0.14-pre.2 | 59 | 12/28/2024 |
1.0.14-pre.1 | 65 | 12/27/2024 |
1.0.13-pre.1 | 63 | 12/27/2024 |
1.0.12 | 809 | 12/26/2024 |
1.0.11 | 104 | 12/26/2024 |
1.0.10 | 110 | 12/26/2024 |
1.0.10-pre.1 | 62 | 12/27/2024 |
1.0.9 | 102 | 12/26/2024 |
1.0.8 | 96 | 12/26/2024 |
1.0.7 | 99 | 12/26/2024 |
1.0.6 | 90 | 12/26/2024 |
1.0.5 | 934 | 12/23/2024 |
1.0.4 | 94 | 12/23/2024 |
1.0.3 | 139 | 12/22/2024 |
1.0.2 | 175 | 12/22/2024 |
1.0.1 | 664 | 12/12/2024 |
1.0.0 | 420 | 12/4/2024 |
1.0.0-alpha.22 | 273 | 12/2/2024 |
1.0.0-alpha.21 | 166 | 11/30/2024 |
1.0.0-alpha.20 | 224 | 11/26/2024 |
1.0.0-alpha.19 | 299 | 11/20/2024 |
1.0.0-alpha.18 | 341 | 11/13/2024 |
1.0.0-alpha.17 | 551 | 11/1/2024 |
1.0.0-alpha.16 | 1,001 | 10/4/2024 |
1.0.0-alpha.15 | 549 | 9/19/2024 |
1.0.0-alpha.14 | 160 | 9/19/2024 |
1.0.0-alpha.13 | 58 | 9/19/2024 |
1.0.0-alpha.12 | 67 | 9/19/2024 |
1.0.0-alpha.11 | 58 | 9/19/2024 |
1.0.0-alpha.10 | 108 | 9/19/2024 |
1.0.0-alpha.9 | 81 | 9/18/2024 |
1.0.0-alpha.8 | 76 | 9/18/2024 |
1.0.0-alpha.7 | 139 | 9/18/2024 |
1.0.0-alpha.6 | 235 | 9/18/2024 |
1.0.0-alpha.5 | 355 | 9/14/2024 |
1.0.0-alpha.4 | 76 | 9/14/2024 |
## v1.1.2 (patch)
Changes since v1.1.1:
- Update DESCRIPTION.md to clarify utility purpose and change project SDK reference in ScopedAction.csproj ([@matt-edmondson](https://github.com/matt-edmondson))
- Remove Directory.Build.props and Directory.Build.targets files, delete unused PowerShell scripts for versioning, changelog generation, and license creation. Add copyright notice to ScopedAction.cs. ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.1.2-pre.1 (prerelease)
Changes since v1.1.1:
- Sync .runsettings ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync .github\workflows\dotnet.yml ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync .editorconfig ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.1.1 (patch)
Changes since v1.1.0:
- Update README to match standard template format ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.1.1-pre.1 (prerelease)
Incremental prerelease update.
## v1.1.0 (minor)
Changes since v1.0.0:
- Renamed metadata files ([@matt-edmondson](https://github.com/matt-edmondson))
- Apply new editorconfig ([@matt-edmondson](https://github.com/matt-edmondson))
- Replace LICENSE file with LICENSE.md and update copyright information ([@matt-edmondson](https://github.com/matt-edmondson))
- Add LICENSE template ([@matt-edmondson](https://github.com/matt-edmondson))
- Add automation scripts for metadata generation and project management ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.0.16-pre.2 (prerelease)
Changes since v1.0.16-pre.1:
- 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.16-pre.1 (prerelease)
Changes since v1.0.15:
- Sync .gitignore ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync scripts\make-version.ps1 ([@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]))
## v1.0.15 (patch)
Changes since v1.0.14:
- Apply new editorconfig ([@matt-edmondson](https://github.com/matt-edmondson))
- Add automation scripts for metadata generation and project management ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.0.15-pre.3 (prerelease)
Changes since v1.0.15-pre.2:
- 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.15-pre.2 (prerelease)
Changes since v1.0.15-pre.1:
- Sync .github\workflows\dotnet.yml ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.0.15-pre.1 (prerelease)
Incremental prerelease update.
## v1.0.14-pre.28 (prerelease)
Changes since v1.0.14-pre.27:
- Sync .github\workflows\dotnet.yml ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.0.14-pre.27 (prerelease)
Changes since v1.0.14-pre.26:
- Sync .github\workflows\dotnet.yml ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.0.14-pre.26 (prerelease)
Changes since v1.0.14-pre.25:
## v1.0.14-pre.25 (prerelease)
Changes since v1.0.14-pre.24:
## v1.0.14-pre.24 (prerelease)
Changes since v1.0.14-pre.23:
- Bump MSTest from 3.7.2 to 3.7.3 ([@dependabot[bot]](https://github.com/dependabot[bot]))
## v1.0.14-pre.23 (prerelease)
Changes since v1.0.14-pre.22:
## v1.0.14-pre.22 (prerelease)
Changes since v1.0.14-pre.21:
## v1.0.14-pre.21 (prerelease)
Changes since v1.0.14-pre.20:
- Bump MSTest from 3.7.1 to 3.7.2 ([@dependabot[bot]](https://github.com/dependabot[bot]))
## v1.0.14-pre.20 (prerelease)
Changes since v1.0.14-pre.19:
- Bump coverlet.collector from 6.0.3 to 6.0.4 ([@dependabot[bot]](https://github.com/dependabot[bot]))
## v1.0.14-pre.19 (prerelease)
Changes since v1.0.14-pre.18:
## v1.0.14-pre.18 (prerelease)
Changes since v1.0.14-pre.17:
## v1.0.14-pre.17 (prerelease)
Changes since v1.0.14-pre.16:
- Bump MSTest from 3.7.0 to 3.7.1 ([@dependabot[bot]](https://github.com/dependabot[bot]))
## v1.0.14-pre.16 (prerelease)
Changes since v1.0.14-pre.15:
## v1.0.14-pre.15 (prerelease)
Changes since v1.0.14-pre.14:
## v1.0.14-pre.14 (prerelease)
Changes since v1.0.14-pre.13:
- Sync .github\workflows\dotnet.yml ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.0.14-pre.13 (prerelease)
Changes since v1.0.14-pre.12:
- 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.14-pre.12 (prerelease)
Changes since v1.0.14-pre.11:
## v1.0.14-pre.11 (prerelease)
Changes since v1.0.14-pre.10:
- Sync .github\workflows\dotnet.yml ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.0.14-pre.10 (prerelease)
Changes since v1.0.14-pre.9:
## v1.0.14-pre.9 (prerelease)
Changes since v1.0.14-pre.8:
## v1.0.14-pre.8 (prerelease)
Changes since v1.0.14-pre.7:
- Sync .mailmap ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync scripts\make-version.ps1 ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.0.14-pre.7 (prerelease)
Changes since v1.0.14-pre.6:
- Sync scripts\make-changelog.ps1 ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.0.14-pre.6 (prerelease)
Changes since v1.0.14-pre.5:
- Add automation scripts for metadata generation and project management ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.0.14-pre.5 (prerelease)
Changes since v1.0.14-pre.4:
## v1.0.14-pre.4 (prerelease)
Changes since v1.0.14-pre.3:
- Bump coverlet.collector from 6.0.2 to 6.0.3 ([@dependabot[bot]](https://github.com/dependabot[bot]))
## v1.0.14-pre.3 (prerelease)
Changes since v1.0.14-pre.2:
## v1.0.14-pre.2 (prerelease)
Changes since v1.0.14-pre.1:
- Sync .github\workflows\dotnet.yml ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync .github\workflows\dotnet.yml ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.0.14-pre.1 (prerelease)
Incremental prerelease update.
## v1.0.13-pre.1 (prerelease)
Changes since v1.0.12:
- Renamed metadata files ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.0.12 (patch)
Changes since v1.0.11:
- Sync icon.png ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.0.11 (patch)
Changes since v1.0.10:
- Sync Directory.Build.props ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.0.10 (patch)
Changes since v1.0.9:
- Sync Directory.Build.props ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.0.10-pre.1 (prerelease)
Changes since v1.0.10:
- Renamed metadata files ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.0.9 (patch)
Changes since v1.0.8:
- Sync Directory.Build.props ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.0.8 (patch)
Changes since v1.0.7:
- Replace LICENSE file with LICENSE.md and update copyright information ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.0.7 (patch)
Changes since v1.0.6:
- Sync Directory.Build.targets ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.0.6 (patch)
Changes since v1.0.5:
- 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]))
- 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 icon.png ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.0.5 (patch)
Changes since v1.0.4:
- Sync .github\workflows\dotnet.yml ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.0.4 (patch)
Changes since v1.0.3:
- Sync .github\workflows\dotnet.yml ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.0.3 (patch)
Changes since v1.0.2:
- Sync Directory.Build.props ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync Directory.Build.targets ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.0.2 (patch)
Changes since v1.0.1:
- Sync Directory.Build.targets ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync .github\workflows\dotnet.yml ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync Directory.Build.props ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync .github\workflows\dotnet.yml ([@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.props ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.0.1 (patch)
Changes since v1.0.0:
- Bump MSTest.TestAdapter from 3.6.3 to 3.6.4 ([@dependabot[bot]](https://github.com/dependabot[bot]))
## v1.0.0-alpha.22 (prerelease)
Changes since v1.0.0-alpha.21:
- 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:
- Sync Directory.Build.props ([@ktsu[bot]](https://github.com/ktsu[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:
- Sync Directory.Build.props ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Update VERSION to 1.0.0-alpha.20 ([@matt-edmondson](https://github.com/matt-edmondson))
- Sync Directory.Build.targets ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.0.0-alpha.19 (prerelease)
Changes since v1.0.0-alpha.18:
- Update VERSION to 1.0.0-alpha.19 ([@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.18 (prerelease)
Changes since v1.0.0-alpha.17:
- Bump MSTest.TestFramework from 3.6.2 to 3.6.3 ([@dependabot[bot]](https://github.com/dependabot[bot]))
- Update VERSION to 1.0.0-alpha.18 ([@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]))
## v1.0.0-alpha.17 (prerelease)
Changes since v1.0.0-alpha.16:
- Bump MSTest.TestAdapter from 3.6.0 to 3.6.2 ([@dependabot[bot]](https://github.com/dependabot[bot]))
- Update VERSION to 1.0.0-alpha.17 ([@matt-edmondson](https://github.com/matt-edmondson))
- Bump MSTest.TestFramework from 3.6.1 to 3.6.2 ([@dependabot[bot]](https://github.com/dependabot[bot]))
## v1.0.0-alpha.16 (prerelease)
Changes since v1.0.0-alpha.15:
- Bump MSTest.TestFramework from 3.6.0 to 3.6.1 ([@dependabot[bot]](https://github.com/dependabot[bot]))
- Update VERSION to 1.0.0-alpha.16 ([@matt-edmondson](https://github.com/matt-edmondson))
## 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))
- Sync .github\workflows\dotnet.yml ([@ktsu[bot]](https://github.com/ktsu[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))
## 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))
## 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))
## v1.0.0-alpha.11 (prerelease)
Changes since v1.0.0-alpha.10:
- Update VERSION to 1.0.0-alpha.11 ([@matt-edmondson](https://github.com/matt-edmondson))
- Sync .github\dependabot.yml ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync .github\dependabot.yml ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync .github\workflows\dotnet.yml ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.0.0-alpha.10 (prerelease)
Changes since v1.0.0-alpha.9:
- Sync .github\workflows\dependabot-merge.yml ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.0.0-alpha.9 (prerelease)
Changes since v1.0.0-alpha.8:
- Sync .github\workflows\dependabot-merge.yml ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.0.0-alpha.8 (prerelease)
Changes since v1.0.0-alpha.7:
- Sync .github\workflows\dependabot-merge.yml ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.0.0-alpha.7 (prerelease)
Changes since v1.0.0-alpha.6:
- Sync .github\workflows\dependabot-merge.yml ([@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]))
- Sync .github\workflows\dependabot-merge.yml ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync .github\workflows\dotnet.yml ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Bump MSTest.TestFramework from 3.5.2 to 3.6.0 ([@dependabot[bot]](https://github.com/dependabot[bot]))
- Bump MSTest.TestAdapter from 3.5.2 to 3.6.0 ([@dependabot[bot]](https://github.com/dependabot[bot]))
- Sync .github\workflows\dotnet.yml ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.0.0-alpha.6 (prerelease)
Changes since v1.0.0-alpha.5:
- Sync .github\dependabot.yml ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync .github\workflows\dotnet.yml ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.0.0-alpha.5 (prerelease)
Changes since v1.0.0-alpha.4:
- Migrate ktsu.io to ktsu namespace ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.0.0-alpha.4 (prerelease)
Incremental prerelease update.
## v1.0.0 (major)
- Update Directory.Build.props ([@matt-edmondson](https://github.com/matt-edmondson))
- Update dotnet.yml ([@matt-edmondson](https://github.com/matt-edmondson))
- 1.0.0-alpha.4 ([@matt-edmondson](https://github.com/matt-edmondson))
- Update build config ([@matt-edmondson](https://github.com/matt-edmondson))
- Update nuget.config ([@matt-edmondson](https://github.com/matt-edmondson))
- Update nuget.config ([@matt-edmondson](https://github.com/matt-edmondson))
- Add github package support ([@matt-edmondson](https://github.com/matt-edmondson))
- Initial commit ([@matt-edmondson](https://github.com/matt-edmondson))
- Dont automatically run the OnOpen in the trivial constructor, derived classes should call it explicitly ([@matt-edmondson](https://github.com/matt-edmondson))
- Update dotnet.yml ([@matt-edmondson](https://github.com/matt-edmondson))
- Update dotnet.yml ([@matt-edmondson](https://github.com/matt-edmondson))
- Migrate ktsu.io to ktsu namespace ([@matt-edmondson](https://github.com/matt-edmondson))
- Update LICENSE ([@matt-edmondson](https://github.com/matt-edmondson))
- Allow delegates to be set in derived constructors ([@matt-edmondson](https://github.com/matt-edmondson))
- Update Directory.Build.targets ([@matt-edmondson](https://github.com/matt-edmondson))
- Update Directory.Build.targets ([@matt-edmondson](https://github.com/matt-edmondson))