This repository contains configuration and instructions for GitHub Copilot agents to assist with development tasks.
DotnetToolWrapper is a .NET 8.0, 9.0, and 10.0 console application that serves as a wrapper for native applications packaged as .NET Tools.
DotnetToolWrapper/
├── .github/
│ └── workflows/ # GitHub Actions workflows
│ ├── build.yaml # Reusable build workflow
│ ├── build_on_push.yaml # Triggered on push events
│ └── release.yaml # Release workflow
├── src/
│ └── DemaConsulting.DotnetToolWrapper/
│ ├── Program.cs # Main application logic
│ └── DemaConsulting.DotnetToolWrapper.csproj
├── .cspell.json # Spelling check configuration
├── .markdownlint.json # Markdown linting configuration
├── README.md # Project documentation
├── LICENSE # MIT License
└── spdx-workflow.yaml # SBOM enhancement workflow
- .NET 8.0, 9.0, 10.0: Multi-targeted framework versions
- C# 12: Programming language
- GitHub Actions: CI/CD automation
- SBOM Tools: Software Bill of Materials generation
dotnet restore
dotnet build --configuration Release- Language Version: C# 12
- Nullable Reference Types: Enabled
- Implicit Usings: Enabled
- Target Frameworks: net8.0, net9.0, net10.0
The project uses a modular workflow approach:
- build_on_push.yaml: Triggers on every push, calls the reusable build workflow
- build.yaml: Reusable workflow that performs the actual build, SBOM generation, and artifact upload
- release.yaml: Handles release-specific tasks
Quality checks are automated through GitHub Actions:
- Spelling: Checked using
cspellagainst.cspell.jsonconfiguration - Markdown Linting: Validated using
markdownlint-cliagainst.markdownlint.jsonconfiguration
- Multi-targeting: Always ensure changes are compatible with .NET 8.0, 9.0, and 10.0
- Cross-platform: The tool must work on Windows, Linux, FreeBSD, and macOS
- Architecture Support: Support x86, x64, ARM, ARM64, WASM, and S390x architectures
- Preserve the reusable workflow pattern
- Update both
build.yamlandbuild_on_push.yamlif needed - Ensure SBOM generation continues to work
- Follow the markdown linting rules in
.markdownlint.json - Check spelling against
.cspell.jsondictionary - Keep README.md synchronized with actual functionality
Update the .csproj file in src/DemaConsulting.DotnetToolWrapper/
Edit the "Create Drop Folder" step in .github/workflows/build.yaml
- Modify
<TargetFrameworks>in the.csprojfile - Update workflow files to include new framework versions
- Update the "Create Drop Folder" step to copy artifacts for new frameworks
Before committing:
- Build locally:
dotnet build --configuration Release - Run spelling checks:
npx cspell "**/*.md" - Run markdown linting:
npx markdownlint "**/*.md"
For questions or issues, please refer to the repository's issue tracker on GitHub.