shipyard 0.0.1

There is a newer version of this package available.
See the version list below for details.
dotnet tool install --global shipyard --version 0.0.1
                    
This package contains a .NET tool you can call from the shell/command line.
dotnet new tool-manifest
                    
if you are setting up this repo
dotnet tool install --local shipyard --version 0.0.1
                    
This package contains a .NET tool you can call from the shell/command line.
#tool dotnet:?package=shipyard&version=0.0.1
                    
nuke :add-package shipyard --version 0.0.1
                    

Shipyard

Project to build and package .NET applications on Linux.

Current focus:

  • RPM Packages

Future Goals:

  • DEB Packages
  • Flatpaks
  • Snaps
  • AppImage
  • tarball

Architecture

  • Project build configuration should live in a single file, ideally one that can easily be checked into source control right along side the source code.
    • Going with a JSON config for now, yaml might be nice to add support for later for folks that prefer it.
    • Each project should only need 1 build configuration, even if they want to build for multiple platforms (x86_64, aarch64).
    • Each package that is output should have its own package config, these package configs should only contain that package types specific configuration. (eg. if building both DEB and RPM packages for the same platform they shouldn't both need to specify the platform).
  • When possible, the Shipyard should use standard packaging tools and fit neatly into the ecosystem, without overstepping where it doesn't need to. (eg. Use rpmbuild to build RPM packages instead of reinventing the wheel).
  • The main application flow I forsee with this is:
    1. User runs shipyard --config path/to/shipyard.json --output path/to/output/dir
    2. Shipyard reads and deserializes the configuration file into ProjectConfig.
    3. Shipyard validates the configuration.
    • If invalid, it outputs errors and exits.
    • This should include validating that required fields for the selected package formats are present.
    • This should also include verifying that the target project exists and can be built with the specified settings.
    1. Shipyard does a dotnet publish of the target project to the $"{output}/publish-{arch}{(selfContained ? string.Empty : "-sc")}" directory. -- dotnet publish ./Example/Example.csproj --output ./publish-x86_64 --configuration Release --framework net10.0 --runtime linux-x64 --no-self-contained --verbosity minimal or similar
    2. Shipyard uses the Packagers to create the packages for each of the package type configs in the ProjectConfig.
    • This allows, for example, building both x86_64 and aarch64 RPMs and DEBs (4 packages total in this example) at the same time.
    1. Shipyard outputs the generated packages to the the $"{output}" directory.
    • Hopefully ending up with a filesystem that looks something like this with the example above:
      • $"{output}/publish-x64"
      • $"{output}/publish-arm64"
      • $"{output}/Project-1.0.0-1.arm64.deb"
      • $"{output}/Project-1.0.0-1.arm64.rpm"
      • $"{output}/Project-1.0.0-1.x64.deb"
      • $"{output}/Project-1.0.0-1.x64.rpm"
Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  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.

This package has no dependencies.

Version Downloads Last Updated
0.0.6 357 2/16/2026
0.0.5 263 1/3/2026
0.0.4 173 12/20/2025
0.0.3 144 12/20/2025
0.0.2 137 12/20/2025
0.0.1 137 12/20/2025