ktsu.CodeBlocker 1.1.1

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

ktsu.CodeBlocker

An IndentedTextWriter that makes generating code blocks easier.

License NuGet NuGet Downloads Build Status GitHub Stars

Introduction

CodeBlocker is a specialized utility built on top of IndentedTextWriter that simplifies the process of programmatically generating structured code. It provides automatic indentation management and a fluent interface for creating code blocks with proper nesting, making it ideal for code generation tasks, template engines, and dynamic source code creation.

Features

  • Automatic Indentation: Properly manages indentation levels as you create nested code blocks
  • Scope Management: Uses C# using statements for clean, readable scope creation
  • Flexible API: Write individual lines or entire code blocks with proper formatting
  • Standard Output Support: Works with any TextWriter, including console output
  • Lightweight: Minimal dependencies, focused on doing one thing well

Installation

Package Manager Console

Install-Package ktsu.CodeBlocker

.NET CLI

dotnet add package ktsu.CodeBlocker

Package Reference

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

Usage Examples

Basic Example

namespace CodeBlockerExample;

using ktsu.CodeBlocker;

internal class Example
{
	public static void GenerateCode()
	{
		using var codeBlocker = CodeBlocker.Create();

		codeBlocker.WriteLine("using System;");
		codeBlocker.NewLine();
		codeBlocker.WriteLine("namespace Example");
		using (new Scope(codeBlocker))
		{
			codeBlocker.WriteLine("public class Example");
			using (new Scope(codeBlocker))
			{
				codeBlocker.WriteLine("public static void Main()");
				using (new Scope(codeBlocker))
				{
					codeBlocker.WriteLine("Console.WriteLine(\"Hello, World!\");");
				}
			}
		}

		Console.WriteLine(codeBlocker.ToString());
	}
}

The above example generates the following code:

using System;

namespace Example
{
    public class Example
    {
        public static void Main()
        {
            Console.WriteLine("Hello, World!");
        }
    }
}

Advanced Usage

// Creating a CodeBlocker with custom settings
using var codeBlocker = new CodeBlocker(
    new StringWriter(),
    indentString: "  ",  // Use 2 spaces for indentation
    tabsAsSpaces: true   // Convert tabs to spaces
);

// Generate a more complex structure
codeBlocker.WriteLine("public interface IExample");
using (new Scope(codeBlocker))
{
    // Define interface methods
    codeBlocker.WriteLine("void Method1();");
    codeBlocker.WriteLine("string Method2(int parameter);");
    
    // Define nested interface
    codeBlocker.NewLine();
    codeBlocker.WriteLine("public interface INestedExample");
    using (new Scope(codeBlocker))
    {
        codeBlocker.WriteLine("void NestedMethod();");
    }
}

// Add implementation
codeBlocker.NewLine();
codeBlocker.WriteLine("public class Implementation : IExample");
using (new Scope(codeBlocker))
{
    // Implement methods
    codeBlocker.WriteLine("public void Method1()");
    using (new Scope(codeBlocker))
    {
        codeBlocker.WriteLine("// Implementation here");
    }
    
    codeBlocker.NewLine();
    codeBlocker.WriteLine("public string Method2(int parameter)");
    using (new Scope(codeBlocker))
    {
        codeBlocker.WriteLine("return parameter.ToString();");
    }
}

API Reference

CodeBlocker Class

The main class for building indented code blocks.

Properties
Name Type Description
IndentLevel int Current indentation level
TabSize int Size of a tab in spaces
IndentString string String used for indentation (default: tab)
TextWriter TextWriter Underlying TextWriter instance
Methods
Name Return Type Description
WriteLine(string? line) void Writes a line of text with appropriate indentation
Write(string? text) void Writes text without a line terminator
NewLine() void Writes an empty line
Indent() void Increases the indent level
Unindent() void Decreases the indent level
ToString() string Returns the generated code as a string
Create() CodeBlocker Static factory method to create a new CodeBlocker instance

Scope Class

Helper class for managing indentation scopes.

Methods
Name Return Type Description
Dispose() void Decreases indentation level when scope is exited

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

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.
  • net8.0

    • No dependencies.
  • net9.0

    • No dependencies.

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.1.2-pre.17 114 5/20/2025
1.1.2-pre.15 72 5/17/2025
1.1.2-pre.14 122 5/16/2025
1.1.2-pre.13 195 5/15/2025
1.1.2-pre.12 195 5/14/2025
1.1.2-pre.11 196 5/13/2025
1.1.2-pre.10 222 5/12/2025
1.1.2-pre.9 161 5/11/2025
1.1.2-pre.8 108 5/10/2025
1.1.2-pre.7 42 5/9/2025
1.1.2-pre.6 115 5/8/2025
1.1.2-pre.5 115 5/7/2025
1.1.2-pre.4 113 5/6/2025
1.1.2-pre.3 116 5/5/2025
1.1.2-pre.2 115 5/4/2025
1.1.2-pre.1 116 5/4/2025
1.1.1 107 5/4/2025
1.1.1-pre.2 52 4/26/2025
1.1.1-pre.1 114 4/4/2025
1.1.0 140 3/30/2025
1.0.32-pre.2 72 3/29/2025
1.0.32-pre.1 454 3/25/2025
1.0.31 120 2/17/2025
1.0.31-pre.3 80 2/6/2025
1.0.31-pre.2 65 2/5/2025
1.0.31-pre.1 63 2/5/2025
1.0.30 105 1/2/2025
1.0.30-pre.29 65 2/3/2025
1.0.30-pre.28 66 2/3/2025
1.0.30-pre.27 69 2/1/2025
1.0.30-pre.26 62 1/30/2025
1.0.30-pre.25 68 1/28/2025
1.0.30-pre.24 62 1/26/2025
1.0.30-pre.23 56 1/24/2025
1.0.30-pre.22 57 1/22/2025
1.0.30-pre.21 64 1/20/2025
1.0.30-pre.20 53 1/18/2025
1.0.30-pre.19 57 1/16/2025
1.0.30-pre.18 39 1/14/2025
1.0.30-pre.17 50 1/13/2025
1.0.30-pre.16 58 1/11/2025
1.0.30-pre.15 53 1/10/2025
1.0.30-pre.14 56 1/10/2025
1.0.30-pre.13 52 1/8/2025
1.0.30-pre.12 60 1/7/2025
1.0.30-pre.11 62 1/6/2025
1.0.30-pre.10 78 1/4/2025
1.0.30-pre.9 68 1/3/2025
1.0.30-pre.8 65 1/3/2025
1.0.30-pre.7 67 1/3/2025
1.0.30-pre.6 75 1/2/2025
1.0.30-pre.5 92 12/31/2024
1.0.30-pre.4 62 12/29/2024
1.0.30-pre.3 62 12/28/2024
1.0.30-pre.2 68 12/27/2024
1.0.30-pre.1 59 12/27/2024
1.0.29-pre.1 58 12/27/2024
1.0.28 99 12/26/2024
1.0.27 98 12/26/2024
1.0.26 101 12/26/2024
1.0.25 103 12/26/2024
1.0.24 98 12/26/2024
1.0.23 103 12/26/2024
1.0.22 102 12/26/2024
1.0.21 98 12/23/2024
1.0.20 99 12/23/2024
1.0.19 110 12/22/2024
1.0.18 104 12/22/2024
1.0.17 107 12/4/2024
1.0.16 107 12/2/2024
1.0.15 107 11/30/2024
1.0.14 104 11/26/2024
1.0.13 113 11/20/2024
1.0.12 112 11/13/2024
1.0.11 104 11/1/2024
1.0.10 117 10/4/2024
1.0.10-pre.1 63 12/27/2024
1.0.9 112 9/19/2024
1.0.8 97 9/19/2024
1.0.7 100 9/19/2024
1.0.6 104 9/19/2024
1.0.5 112 9/18/2024
1.0.4 105 9/18/2024
1.0.3 106 9/18/2024
1.0.2 113 9/18/2024
1.0.1 121 9/14/2024
1.0.0 127 9/14/2024

## v1.1.1 (patch)

Changes since v1.1.0:

- Remove Directory.Build.props and Directory.Build.targets files, delete commit metadata and changelog scripts, and add copyright notice to CodeBlocker.cs. ([@matt-edmondson](https://github.com/matt-edmondson))
- Enhance documentation and project metadata. Updated DESCRIPTION.md to clarify the purpose of CodeBlocker and expanded README.md with detailed introduction, features, installation instructions, usage examples, and API reference. Changed project SDK in CodeBlocker.csproj to ktsu.Sdk.Lib/1.8.0. ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.1.1-pre.2 (prerelease)

Changes since v1.1.1-pre.1:

- Sync .github\workflows\dotnet.yml ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync .editorconfig ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync .runsettings ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.1.1-pre.1 (prerelease)

Changes since v1.1.0:

- Sync .editorconfig ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.1.0 (minor)

Changes since v1.0.0:

- Update .editorconfig for improved code style and naming ([@matt-edmondson](https://github.com/matt-edmondson))
- Add automation scripts for metadata management and versioning ([@matt-edmondson](https://github.com/matt-edmondson))
- Add LICENSE template ([@matt-edmondson](https://github.com/matt-edmondson))
- Replace LICENSE file with LICENSE.md and update copyright information ([@matt-edmondson](https://github.com/matt-edmondson))
- Migrate ktsu.io to ktsu namespace ([@matt-edmondson](https://github.com/matt-edmondson))
- Renamed metadata files ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.0.32-pre.2 (prerelease)

Changes since v1.0.32-pre.1:

- 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.0.32-pre.1 (prerelease)

Changes since v1.0.31:

- Sync Directory.Build.targets ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync .gitignore ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync .editorconfig ([@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.0.31 (patch)

Changes since v1.0.30:

- Update .editorconfig for improved code style and naming ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.0.31-pre.3 (prerelease)

Changes since v1.0.31-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.0.31-pre.2 (prerelease)

Changes since v1.0.31-pre.1:

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

Incremental prerelease update.

## v1.0.30-pre.29 (prerelease)

Changes since v1.0.30-pre.28:

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

Changes since v1.0.30-pre.27:

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

Changes since v1.0.30-pre.26:
## v1.0.30-pre.26 (prerelease)

Changes since v1.0.30-pre.25:
## v1.0.30-pre.25 (prerelease)

Changes since v1.0.30-pre.24:

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

Changes since v1.0.30-pre.23:
## v1.0.30-pre.23 (prerelease)

Changes since v1.0.30-pre.22:
## v1.0.30-pre.22 (prerelease)

Changes since v1.0.30-pre.21:

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

Changes since v1.0.30-pre.20:

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

Changes since v1.0.30-pre.19:
## v1.0.30-pre.19 (prerelease)

Changes since v1.0.30-pre.18:
## v1.0.30-pre.18 (prerelease)

Changes since v1.0.30-pre.17:

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

Changes since v1.0.30-pre.16:
## v1.0.30-pre.16 (prerelease)

Changes since v1.0.30-pre.15:
## v1.0.30-pre.15 (prerelease)

Changes since v1.0.30-pre.14:

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

Changes since v1.0.30-pre.13:

- 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.30-pre.13 (prerelease)

Changes since v1.0.30-pre.12:
## v1.0.30-pre.12 (prerelease)

Changes since v1.0.30-pre.11:

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

Changes since v1.0.30-pre.10:
## v1.0.30-pre.10 (prerelease)

Changes since v1.0.30-pre.9:
## v1.0.30-pre.9 (prerelease)

Changes since v1.0.30-pre.8:

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

Changes since v1.0.30-pre.7:

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

Changes since v1.0.30-pre.6:

- Add automation scripts for metadata management and versioning ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.0.30-pre.6 (prerelease)

Changes since v1.0.30-pre.5:
## v1.0.30-pre.5 (prerelease)

Changes since v1.0.30-pre.4:

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

Changes since v1.0.30-pre.3:
## v1.0.30-pre.3 (prerelease)

Changes since v1.0.30-pre.2:

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

Changes since v1.0.30-pre.1:

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

Incremental prerelease update.
## v1.0.29-pre.1 (prerelease)

Changes since v1.0.28:

- Renamed metadata files ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.0.28 (patch)

Changes since v1.0.27:

- Sync icon.png ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.0.27 (patch)

Changes since v1.0.26:

- Sync Directory.Build.props ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.0.26 (patch)

Changes since v1.0.25:

- Sync Directory.Build.props ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.0.25 (patch)

Changes since v1.0.24:

- Sync Directory.Build.props ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.0.24 (patch)

Changes since v1.0.23:

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

Changes since v1.0.22:

- Sync Directory.Build.targets ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.0.22 (patch)

Changes since v1.0.21:

- Sync Directory.Build.targets ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync icon.png ([@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.targets ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync Directory.Build.props ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.0.21 (patch)

Changes since v1.0.20:

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

Changes since v1.0.19:

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

Changes since v1.0.18:

- Sync Directory.Build.props ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync Directory.Build.targets ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.0.18 (patch)

Changes since v1.0.17:

- 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.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]))
- Sync .github\workflows\dotnet.yml ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.0.17 (patch)

Changes since v1.0.16:

- 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]))
## v1.0.16 (patch)

Changes since v1.0.15:

- Sync Directory.Build.targets ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.0.15 (patch)

Changes since v1.0.14:

- Sync Directory.Build.props ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.0.14 (patch)

Changes since v1.0.13:

- Sync Directory.Build.targets ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync Directory.Build.props ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.0.13 (patch)

Changes since v1.0.12:

- Bump Microsoft.NET.Test.Sdk in the microsoft group ([@dependabot[bot]](https://github.com/dependabot[bot]))
- Bump MSTest.TestAdapter from 3.6.2 to 3.6.3 ([@dependabot[bot]](https://github.com/dependabot[bot]))
## v1.0.12 (patch)

Changes since v1.0.11:

- Bump MSTest.TestFramework from 3.6.2 to 3.6.3 ([@dependabot[bot]](https://github.com/dependabot[bot]))
## v1.0.11 (patch)

Changes since v1.0.10:

- Bump MSTest.TestAdapter from 3.6.1 to 3.6.2 ([@dependabot[bot]](https://github.com/dependabot[bot]))
- Bump MSTest.TestFramework from 3.6.0 to 3.6.2 ([@dependabot[bot]](https://github.com/dependabot[bot]))
## v1.0.10 (patch)

Changes since v1.0.9:

- Bump MSTest.TestAdapter from 3.6.0 to 3.6.1 ([@dependabot[bot]](https://github.com/dependabot[bot]))
## v1.0.10-pre.1 (prerelease)

Changes since v1.0.10:

- Replace LICENSE file with LICENSE.md and update copyright information ([@matt-edmondson](https://github.com/matt-edmondson))
- Renamed metadata files ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.0.9 (patch)

Changes since v1.0.8:

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

Changes since v1.0.7:
## v1.0.7 (patch)

Changes since v1.0.6:

- 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.6 (patch)

Changes since v1.0.5:

- Sync .github\workflows\dependabot-merge.yml ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.0.5 (patch)

Changes since v1.0.4:

- Sync .github\workflows\dependabot-merge.yml ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.0.4 (patch)

Changes since v1.0.3:

- Sync .github\workflows\dependabot-merge.yml ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.0.3 (patch)

Changes since v1.0.2:

- Sync .github\workflows\dependabot-merge.yml ([@ktsu[bot]](https://github.com/ktsu[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]))
- 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]))
- 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]))
## v1.0.2 (patch)

Changes since v1.0.1:

- 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.1 (patch)

Changes since v1.0.0:

- Migrate ktsu.io to ktsu namespace ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.0.0 (major)

- Update description and readme ([@matt-edmondson](https://github.com/matt-edmondson))
- Initial commit after extricating out of Schema Tools project ([@matt-edmondson](https://github.com/matt-edmondson))
- Add XML documentation ([@matt-edmondson](https://github.com/matt-edmondson))
- Update LICENSE ([@matt-edmondson](https://github.com/matt-edmondson))
- Enable dependabot and sourcelink ([@matt-edmondson](https://github.com/matt-edmondson))
- Create dependabot-merge.yml ([@matt-edmondson](https://github.com/matt-edmondson))
- Update dotnet.yml ([@matt-edmondson](https://github.com/matt-edmondson))
- Read PackageDescription from DESCRIPTION file ([@matt-edmondson](https://github.com/matt-edmondson))
- Assign dependabot PRs to matt ([@matt-edmondson](https://github.com/matt-edmondson))
- Migrate from .project.props to Directory.Build.props ([@matt-edmondson](https://github.com/matt-edmondson))
- Update Directory.Build.props ([@matt-edmondson](https://github.com/matt-edmondson))
- Update Directory.Build.props ([@matt-edmondson](https://github.com/matt-edmondson))
- Update nuget.config ([@matt-edmondson](https://github.com/matt-edmondson))
- Create VERSION ([@matt-edmondson](https://github.com/matt-edmondson))
- Update build config ([@matt-edmondson](https://github.com/matt-edmondson))
- Update Directory.Build.targets ([@matt-edmondson](https://github.com/matt-edmondson))
- Update nuget.config ([@matt-edmondson](https://github.com/matt-edmondson))
- Update build scripts ([@matt-edmondson](https://github.com/matt-edmondson))
- Dont try to push packages when building pull requests ([@matt-edmondson](https://github.com/matt-edmondson))
- Update LICENSE ([@matt-edmondson](https://github.com/matt-edmondson))
- Read from VERSION when building ([@matt-edmondson](https://github.com/matt-edmondson))
- Set GenerateDocumentationFile ([@matt-edmondson](https://github.com/matt-edmondson))
- Fix code style errors ([@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))
- Avoid double upload of symbols package ([@matt-edmondson](https://github.com/matt-edmondson))
- Update dotnet.yml ([@matt-edmondson](https://github.com/matt-edmondson))
- Update .editorconfig ([@matt-edmondson](https://github.com/matt-edmondson))
- Add github package support ([@matt-edmondson](https://github.com/matt-edmondson))
- Read from AUTHORS file during build ([@matt-edmondson](https://github.com/matt-edmondson))