Skip to content

Build Package and Contribute

Mike Christensen edited this page Aug 28, 2026 · 2 revisions

Build, package, and contribute

Repository layout

src/
  Imp/          framework project
  Imp.Tests/    framework unit tests
Samples/
  TodoApp/      runnable ASP.NET Core sample
  TodoApp.Tests/

Root files contain solution/build configuration, README, license, and community metadata.

Build and test

Install the .NET 8 and .NET 10 SDKs/runtimes, then:

git clone https://github.com/KitchenPC/Imp.git
cd Imp
dotnet restore Imp.slnx
dotnet build Imp.slnx --configuration Release --no-restore
dotnet test Imp.slnx --configuration Release --no-build --no-restore

Run the sample:

dotnet run --project Samples/TodoApp/TodoApp.csproj

Build a package

dotnet pack src/Imp/Imp.csproj \
  --configuration Release \
  --output artifacts

Inspect the package before release. It should contain .NET 8 and .NET 10 library assets, XML documentation, the root README, and the MIT license. It should reference the ASP.NET Core shared framework and contain no ordinary NuGet dependencies. Do not commit bin, obj, package, or artifact outputs.

CI and releases

Pushes and pull requests restore, build, test, and create a prerelease package artifact. Version tags run the NuGet publication workflow. Package versions are immutable:

git tag v0.2.0
git push origin v0.2.0

The release tag must match the version in src/Imp/Imp.csproj. Increment the version for every release. While Imp remains pre-1.0, use a minor version when compatibility requirements change and a patch version for backward-compatible fixes.

Contribution guidance

  • Add tests for routing, binding, lifecycle, compiler, or response behavior changes.
  • Add an HTTP integration check when behavior depends on Kestrel or the real middleware pipeline.
  • Keep templates well-formed and exercise new embedded resources.
  • Preserve terminal-middleware behavior unless a deliberate design change is discussed.
  • Document security responsibilities—encoding, antiforgery, authentication, and authorization.
  • Update the Todo sample when it can demonstrate a feature without becoming a production-sized application.
  • Open an issue before large API or template-language changes.

See CONTRIBUTING, SECURITY, and the MIT License.

Clone this wiki locally