ktsu.Sdk 1.52.0

Prefix Reserved
There is a newer version of this package available.
See the version list below for details.
<Sdk Name="ktsu.Sdk" Version="1.52.0" />
                    
For projects that support Sdk, copy this XML node into the project file to reference the package.

ktsu.Sdk

A comprehensive MSBuild-based SDK for .NET projects that standardizes configuration, metadata management, and package workflows. Supports multiple .NET versions (.NET 5.0+, .NET Standard 2.0/2.1) with optimizations for .NET 9.0.

Features

  • Multi-Target Support: Supports .NET 5.0+, .NET Standard 2.0/2.1, with optimizations for .NET 9.0
  • MSBuildSdk Packaging Support: Properly configured for MSBuild SDK project packaging
  • Standardized Project Structure: Enforces consistent organization across solution components
  • Metadata Management: Automatically handles project metadata from markdown files
  • Package Publishing: Streamlined NuGet package creation with proper metadata inclusion
  • Documentation: Automated inclusion of documentation in packages
  • GitHub Integration: Built-in support for GitHub workflows and CI/CD
  • Cross-Platform Support: Compatible with Windows, macOS, and Linux
  • Smart Project Detection: Automatic detection of primary, console, GUI, and test projects

Project Structure

  • Sdk: Core SDK implementation with MSBuild props and targets
  • Sdk.Lib: Library-focused SDK components for class libraries
  • Sdk.ConsoleApp: Console application SDK support with cross-platform console configurations
  • Sdk.ImGuiApp: ImGui application SDK for modern GUI applications
  • Sdk.WinApp: Windows application SDK for platform-specific GUI applications
  • Sdk.Test: Testing infrastructure and configuration for unit tests
  • Sdk.WinTest: Windows-specific testing infrastructure and configuration

Usage

To use this SDK in your project:

<Project Sdk="ktsu.Sdk">
  <PropertyGroup>
    
  </PropertyGroup>
</Project>

Project Type Detection

The SDK automatically detects different project types in your solution:

  • Primary Project: The main project of your solution (YourSolution, YourSolution.Core)
  • Console Projects: Command-line interface projects (YourSolution.ConsoleApp, YourSolutionConsoleApp, YourSolution.CLI, YourSolutionCLI)
  • GUI App Projects: Application projects (YourSolution.App, YourSolutionApp, YourSolution.WinApp, YourSolutionWinApp, YourSolution.ImGuiApp, YourSolutionImGuiApp)
  • Test Projects: Test projects (YourSolution.Test, YourSolution.Tests, YourSolutionTest, YourSolutionTests, YourSolution.WinTest, YourSolutionWinTest)

Each project type receives appropriate default settings, references, and output configurations (console apps vs. GUI apps).

Metadata Files

This SDK supports the following metadata files at the solution root:

  • README.md: Project documentation (this file)
  • AUTHORS.md: Project authors and contributors
  • LICENSE.md: Project license information
  • CHANGELOG.md: Version history and changes
  • DESCRIPTION.md: Detailed project description
  • VERSION.md: Current version information
  • TAGS.md: Project tags for NuGet packages
  • COPYRIGHT.md: Copyright information
  • AUTHORS.url: URL to authors' information
  • PROJECT_URL.url: URL to project information

These files are automatically included in the NuGet package and used to populate package metadata.

Key Features

Automatic Project References

Projects automatically reference the primary project and use appropriate namespaces.

Standardized Package Creation

Library projects are automatically configured for NuGet packaging with proper metadata.

Cross-Platform Compatibility

Projects are configured with multiple runtime identifiers for Windows, macOS, and Linux.

Testing Support

Internals are automatically exposed to test projects, and testing configurations are applied.

Requirements

  • .NET SDK 5.0 or later (optimized for .NET SDK 9.0)

License

See the LICENSE.md file for license information.

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

Product Compatible and additional computed target framework versions.
.NET net5.0 is compatible.  net5.0-windows was computed.  net6.0 is compatible.  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 is compatible.  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 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. 
.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 is compatible. 
.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.
  • .NETStandard 2.0

    • No dependencies.
  • .NETStandard 2.1

    • No dependencies.
  • net5.0

    • No dependencies.
  • net6.0

    • No dependencies.
  • net7.0

    • No dependencies.
  • 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.56.0 162 8/6/2025
1.55.0 164 8/6/2025
1.54.0 161 8/6/2025
1.53.0 163 8/6/2025
1.52.0 163 8/6/2025
1.51.0 163 8/6/2025
1.50.0 164 8/6/2025
1.49.0 433 7/21/2025
1.48.0 102 7/18/2025
1.47.0 95 7/18/2025
1.46.0 667 6/15/2025
1.45.0 354 6/15/2025
1.44.0 361 6/15/2025
1.43.0 357 6/15/2025
1.42.0 354 6/15/2025
1.41.0 354 6/15/2025
1.40.0 361 6/15/2025
1.39.1-pre.1 115 6/15/2025
1.39.0 492 6/13/2025
1.38.0 570 5/31/2025
1.37.0 122 5/31/2025
1.36.0 129 5/31/2025
1.35.0 236 5/29/2025
1.34.0 220 5/28/2025
1.33.0 129 5/23/2025
1.32.0 138 5/22/2025
1.31.0 141 5/22/2025
1.30.0 161 5/22/2025
1.29.0 146 5/21/2025
1.28.0 138 5/21/2025
1.27.0 144 5/21/2025
1.26.0 142 5/21/2025
1.25.0 138 5/21/2025
1.24.0 139 5/21/2025
1.23.0 139 5/21/2025
1.22.0 137 5/21/2025
1.21.0 138 5/21/2025
1.20.1-pre.1 116 5/21/2025
1.20.0 137 5/21/2025
1.19.1-pre.1 118 5/21/2025
1.19.0 144 5/21/2025
1.18.0 145 5/21/2025
1.17.1 152 5/21/2025
1.17.1-pre.1 113 5/21/2025
1.17.0 138 5/21/2025
1.16.0 140 5/21/2025
1.15.0 139 5/21/2025
1.14.1 139 5/21/2025
1.14.0 140 5/21/2025
1.13.0 141 5/21/2025
1.12.1 139 5/21/2025
1.12.0 140 5/21/2025
1.11.1-pre.2 114 5/20/2025
1.11.1-pre.1 114 5/18/2025
1.11.0 135 5/18/2025
1.10.2-pre.1 94 5/17/2025
1.10.1 187 5/17/2025
1.10.0 126 5/17/2025
1.9.0 228 5/15/2025
1.8.1-pre.5 76 5/4/2025
1.8.1-pre.4 125 4/28/2025
1.8.1-pre.3 124 4/28/2025
1.8.1-pre.2 125 4/28/2025
1.8.1-pre.1 129 4/28/2025
1.8.0 2,849 4/28/2025
1.7.1-pre.2 130 4/28/2025
1.7.1-pre.1 128 4/28/2025
1.7.0 115 4/26/2025
1.6.0 74 4/26/2025
1.5.1 79 4/26/2025
1.5.0 90 4/26/2025
1.4.0 82 4/26/2025
1.3.0 84 4/26/2025
1.2.0 80 4/26/2025
1.1.0 83 4/26/2025

## v1.52.0 (minor)

Changes since v1.51.0:

- Remove redundant SDK import statements from Sdk.targets files across multiple projects to streamline project configuration. ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.51.0 (minor)

Changes since v1.50.0:

- Add SDK metadata and update project configurations ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.50.0 (minor)

Changes since v1.49.0:

- Remove deprecated files and update project configurations for multi-targeting support ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.49.0 (minor)

Changes since v1.48.0:

- Update project configuration and build scripts ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.48.0 (minor)

Changes since v1.47.0:

- Fix PackageReleaseNotes condition syntax in Sdk.props for NuGet compliance ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.47.0 (minor)

Changes since v1.46.0:

- Enhance PackageReleaseNotes handling in Sdk.props ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.46.0 (minor)

Changes since v1.45.0:

- Add coverage configuration to Sdk.props ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.45.0 (minor)

Changes since v1.44.0:

- Add Microsoft.Testing.Extensions.CodeCoverage package reference to Sdk.props ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.44.0 (minor)

Changes since v1.43.0:

- Add Microsoft.NET.Sdk to Sdk.props for enhanced project configuration ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.43.0 (minor)

Changes since v1.42.0:

- Enhance test project configuration in Sdk.props ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.42.0 (minor)

Changes since v1.41.0:

- Standardize library usage across projects in MSBuild SDK ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.41.0 (minor)

Changes since v1.40.0:

- Update SDK documentation and streamline scripts ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.40.0 (minor)

Changes since v1.39.0:

- [minor] New sdk version ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.39.1-pre.1 (prerelease)

Changes since v1.39.0:
## v1.39.0 (minor)

Changes since v1.38.0:

- Remove self-contained and single-file publish settings ([@matt-edmondson](https://github.com/matt-edmondson))
- Update configuration files and dependencies ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.38.0 (minor)

Changes since v1.37.0:

- Update SelfContained property in Sdk.props ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.37.0 (minor)

Changes since v1.36.0:

- Enable self-contained deployment in Sdk.props ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.36.0 (minor)

Changes since v1.35.0:

- Update runtime identifiers and publishing properties ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.35.0 (minor)

Changes since v1.34.0:

- Refactor project structure and update dependencies ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.34.0 (minor)

Changes since v1.33.0:

- Update SDK configurations and add centralized package management ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.33.0 (minor)

Changes since v1.32.0:

- Update project to .NET 9.0 and enhance configuration ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.32.0 (minor)

Changes since v1.31.0:

- Update PackageReferences in Sdk.targets ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.31.0 (minor)

Changes since v1.30.0:

- Update package references and manage versions centrally ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.30.0 (minor)

Changes since v1.29.0:

- Cleanup: Remove unused ktsu package references ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.29.0 (minor)

Changes since v1.28.0:

- Add WinApp adk ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.28.0 (minor)

Changes since v1.27.0:

- [minor] Remove duplicate CommandLineParser package reference ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.27.0 (minor)

Changes since v1.26.0:

- [minor] Fix typo in TestProjectNamespace ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.26.0 (minor)

Changes since v1.25.0:

- [minor] Fix InternalsVisibleTo for tests ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.25.0 (minor)

Changes since v1.24.0:

- [minor] Fix conditionals for internals ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.24.0 (minor)

Changes since v1.23.0:

- [minor] Fix test package namespace ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.23.0 (minor)

Changes since v1.22.0:

- [minor] Fix incorrect test package namespace ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.22.0 (minor)

Changes since v1.21.0:

- [minor] Upgrade DeepCLone ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.21.0 (minor)

Changes since v1.20.0:

- [minor] fix version ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.20.1-pre.1 (prerelease)

Changes since v1.20.0:
## v1.20.0 (minor)

Changes since v1.19.0:

- [minor] fix versions ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.19.1-pre.1 (prerelease)

Changes since v1.19.0:
## v1.19.0 (minor)

Changes since v1.18.0:

- [minor] Downgrade TestableIO package versions ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.18.0 (minor)

Changes since v1.17.0:

- [minor] Update TestableIO packages in Sdk.targets ([@matt-edmondson](https://github.com/matt-edmondson))
- [patch] fix package version ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.17.1 (patch)

Changes since v1.17.0:

- [patch] fix package version ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.17.1-pre.1 (prerelease)

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

Changes since v1.16.0:

- Refactor package references in Sdk.targets ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.16.0 (minor)

Changes since v1.15.0:

- Enhance project existence checks in Sdk.props ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.15.0 (minor)

Changes since v1.14.0:

- Enhance SDK documentation and features for .NET 9.0 ([@matt-edmondson](https://github.com/matt-edmondson))
- Update Sdk.targets to reference ktsu.Semantics instead of ktsu.SemanticString ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.14.1 (patch)

Changes since v1.14.0:

- Enhance SDK documentation and features for .NET 9.0 ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.14.0 (minor)

Changes since v1.13.0:

- Update project structure and dependencies ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.13.0 (minor)

Changes since v1.12.0:

- Add MSBuildSdk packaging support to project files ([@matt-edmondson](https://github.com/matt-edmondson))
- Remove multi-targeting for .NET frameworks ([@matt-edmondson](https://github.com/matt-edmondson))
- Update projects to target .NET 9.0 ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.12.1 (patch)

Changes since v1.12.0:

- Add MSBuildSdk packaging support to project files ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.12.0 (minor)

Changes since v1.11.0:

- Remove TargetFramework properties from Sdk.props ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.11.1-pre.2 (prerelease)

Changes since v1.11.1-pre.1:

- Sync .editorconfig ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync .gitattributes ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync .gitignore ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync .mailmap ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync .runsettings ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.11.1-pre.1 (prerelease)

Changes since v1.11.0:

- Sync .editorconfig ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync .gitattributes ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync .gitignore ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync .mailmap ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync .runsettings ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.11.0 (minor)

Changes since v1.10.0:

- [patch] Fix tags file not being shown in the solution explorer ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor primary project handling in Sdk.props and Sdk.targets ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.10.2-pre.1 (prerelease)

Changes since v1.10.1:

- Update dotnet-sdk.yml ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.10.1 (patch)

Changes since v1.10.0:

- [patch] Fix tags file not being shown in the solution explorer ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.10.0 (minor)

Changes since v1.9.0:

- [minor] Refactor project structure for centralized settings ([@matt-edmondson](https://github.com/matt-edmondson))
- Add TAGS.md support and enhance project metadata ([@matt-edmondson](https://github.com/matt-edmondson))
- Enhance SDK documentation and add Sdk.CLI project ([@matt-edmondson](https://github.com/matt-edmondson))
- Update Sdk.props for output type configuration ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.9.0 (minor)

Changes since v1.8.0:

- [minor] Support primary project suffixes: Core, App, CLI ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.8.1-pre.5 (prerelease)

Changes since v1.8.1-pre.4:

- Sync .github\workflows\dependabot-merge.yml ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync .github\workflows\project.yml ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.8.1-pre.4 (prerelease)

Changes since v1.8.1-pre.3:

- Refactor changelog generation logic in PowerShell script to implement more flexible commit filtering. Added progressive fallback mechanisms to ensure commits are captured for both regular and prerelease versions, improving the accuracy of the changelog output. ([@github-actions[bot]](https://github.com/github-actions[bot]))
## v1.8.1-pre.3 (prerelease)

Changes since v1.8.1-pre.2:

- Refactor changelog generation logic in PowerShell script to improve commit range determination. Enhanced handling for the newest version and added fallback for relaxed filters when no commits are found. Updated output messages for better clarity. ([@github-actions[bot]](https://github.com/github-actions[bot]))
## v1.8.1-pre.2 (prerelease)

Changes since v1.8.1-pre.1:

- Refactor changelog generation and versioning logic in PowerShell scripts. Updated commit range handling to include the latest changes since the last tag, improved output formatting, and added fallback logic for versioning when no tags are found. ([@github-actions[bot]](https://github.com/github-actions[bot]))
- Remove security analysis step from GitHub Actions workflow and update permissions accordingly. ([@github-actions[bot]](https://github.com/github-actions[bot]))
## v1.8.1-pre.1 (prerelease)

Changes since v1.8.0:

- Enhance GitHub Actions workflow by adding security analysis and dependency detection steps. Updated permissions to include security-events and id-token for improved security scanning and dependency submission. ([@github-actions[bot]](https://github.com/github-actions[bot]))
## v1.8.0 (minor)

Changes since v1.7.0:

- [minor] 1.8.0 ([@github-actions[bot]](https://github.com/github-actions[bot]))
- [minor] Update workflow and add Demo project ([@github-actions[bot]](https://github.com/github-actions[bot]))
- Remove Demo project and associated files ([@github-actions[bot]](https://github.com/github-actions[bot]))
- Update project configuration and versioning scripts ([@github-actions[bot]](https://github.com/github-actions[bot]))
## v1.7.1-pre.2 (prerelease)

Changes since v1.7.1-pre.1:

- [minor] Update workflow and add Demo project ([@github-actions[bot]](https://github.com/github-actions[bot]))
- Remove Demo project and associated files ([@github-actions[bot]](https://github.com/github-actions[bot]))
## v1.7.1-pre.1 (prerelease)

Changes since v1.7.0:

- Update project configuration and versioning scripts ([@github-actions[bot]](https://github.com/github-actions[bot]))
## v1.7.0 (minor)

Changes since v1.6.0:

- Update testing platform command line arguments ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.6.0 (minor)

Changes since v1.5.0:

- Add Sdk.Lib project and update SDK configurations ([@matt-edmondson](https://github.com/matt-edmondson))
- Update AssemblyName to use dynamic MSBuildProjectName ([@matt-edmondson](https://github.com/matt-edmondson))
- Update testing platform configuration in Sdk.props ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.5.1 (patch)

Changes since v1.5.0:

- Add Sdk.Lib project and update SDK configurations ([@matt-edmondson](https://github.com/matt-edmondson))
- Update AssemblyName to use dynamic MSBuildProjectName ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.5.0 (minor)

Changes since v1.4.0:

- Update SDK references in Sdk.props ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.4.0 (minor)

Changes since v1.3.0:

- Update SDK references for versioning consistency ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.3.0 (minor)

Changes since v1.2.0:

- Update project files to use new SDK references ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.2.0 (minor)

Changes since v1.1.0:

- Add Sdk.App and Sdk.Test projects to solution ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.1.0 (major)

- Initial commit ([@matt-edmondson](https://github.com/matt-edmondson))