![]() |
VOOZH | about |
dotnet add package Morphir.Core --version 0.3.0-rc.2
NuGet\Install-Package Morphir.Core -Version 0.3.0-rc.2
<PackageReference Include="Morphir.Core" Version="0.3.0-rc.2" />
<PackageVersion Include="Morphir.Core" Version="0.3.0-rc.2" />Directory.Packages.props
<PackageReference Include="Morphir.Core" />Project file
paket add Morphir.Core --version 0.3.0-rc.2
#r "nuget: Morphir.Core, 0.3.0-rc.2"
#:package Morphir.Core@0.3.0-rc.2
#addin nuget:?package=Morphir.Core&version=0.3.0-rc.2&prereleaseInstall as a Cake Addin
#tool nuget:?package=Morphir.Core&version=0.3.0-rc.2&prereleaseInstall as a Cake Tool
π FINOS - Incubating
π Slack
π Development Workflow
π Deployment Workflow
π NuGet Version
π NuGet Core
π NuGet Tooling
<img src="https://github.com/finos/branding/blob/master/project-logos/active-project-logos/Morphir%20Logo/Horizontal/2020_Morphir_Logo_Horizontal.png?raw=true" width="450">
Morphir is a library of tools that works to capture business logic as data.
For the first time, business logic can be shared, stored, translated and visualised, all with the reliability of standardisation ensured in the Morphir framework.
A set of tools for integrating technologies. Morphir is composed of a library of tools that facilitate the digitisation of business logic into multiple different languages & platforms. The Morphir framework is unique too in that facilities elements of automation and conversion that were previously unavailable in the field of finance-tech.
Makes business logic portable. Business logic digitised provides distinct advantages: capacity for movement across departments and fields & the ability to be converted to new languages and applications.
Defines a standard format for storing and sharing business logic. A clear set of standards and format is in-place from the input/output, allowing for coherent structure.
Refactoring code libraries is often a harmful and time-sensitive issue for businesses, Morphir ensure the standards introduced from input eliminate delays at deployment.
Adaptability and usability are key concepts of the Morphir framework, business logic can now move with the code, be easily understood and adopted, in an ever-developing eco-system.
Certifying that specified functions behave as intended from input to output is assured through the Morphir library / tool chain.
Morphirβs automated processing helps disseminate information which otherwise may not be understood or shared at all, a useful tool when brining elements of business logic to conversation outside of its immediate audience (i.e developers).
Provides tooling for the Morphir ecosystem and .NET libraries that can be used to help you work with Morphir.
Install Morphir using one of the following methods:
Using proto (Recommended for multi-language toolchains):
# Install proto (if not already installed)
curl -fsSL https://moonrepo.dev/install/proto.sh | bash # Linux/macOS
# or: irm https://moonrepo.dev/install/proto.ps1 | iex # Windows
# Add Morphir plugin and install
proto plugin add morphir "source:https://github.com/finos/morphir-dotnet/releases/latest/download/morphir_plugin.wasm"
proto install morphir
Using Platform-Specific Install Scripts:
# Linux
curl -fsSL https://raw.githubusercontent.com/finos/morphir-dotnet/main/scripts/install-linux.sh | bash
# macOS
curl -fsSL https://raw.githubusercontent.com/finos/morphir-dotnet/main/scripts/install-macos.sh | bash
# Windows (PowerShell)
irm https://raw.githubusercontent.com/finos/morphir-dotnet/main/scripts/install-windows.ps1 | iex
Using .NET Tool (requires .NET SDK):
dotnet tool install -g Morphir
Verify Installation:
morphir --version
For detailed installation instructions and troubleshooting, see the Installation Guide.
This project uses Nuke for build orchestration, providing a strongly-typed, cross-platform build system written in C#.
# First-time setup: Restore tools and dependencies
dotnet tool restore
./build.sh --target Restore
# Build the solution (default target)
./build.sh
# Run tests
./build.sh --target Test
# Run linting/formatting checks
./build.sh --target Lint
# Format code
./build.sh --target Format
# Run full CI pipeline (restore, build, test, lint)
./build.sh --target CI
# Show all available targets
./build.sh --help
Windows users: Use build.cmd or build.ps1 instead of ./build.sh
You can set the build configuration using the --configuration parameter:
# Build in Debug mode
./build.sh --configuration Debug
# Run tests in Debug mode
./build.sh --target Test --configuration Debug
By default, commands use Release configuration.
This project was recently migrated from Just to Nuke. See for the complete migration guide and command mappings. The old justfile is preserved for reference.
morphir-dotnet/
βββ src/
β βββ Morphir.Core/ # Core IR types and utilities
β βββ Morphir.Tooling/ # Tooling infrastructure
β βββ Morphir/ # CLI application
βββ tests/
β βββ Morphir.Core.Tests/ # Unit tests for Core
β βββ Morphir.Tooling.Tests/ # Unit tests for Tooling
β βββ Morphir.E2E.Tests/ # End-to-end tests (BDD/Gherkin)
βββ build/
β βββ _build.csproj # Nuke build project
β βββ Build.cs # Build orchestration (strongly-typed)
βββ scripts/ # Build and utility scripts (C# scripts)
βββ build.sh/cmd/ps1 # Nuke bootstrap scripts
βββ justfile # Legacy build commands (preserved for reference)
Restore dependencies:
./build.sh --target Restore
Build the solution:
./build.sh --target Compile
Run tests:
./build.sh --target Test
Check code formatting:
./build.sh --target Lint
Format code (if needed):
# Unix/macOS
./build.sh --target Format
# Windows
build.cmd --target Format
# or
./build.ps1 --target Format
The project uses C# scripts (.cs files) for build automation, leveraging .NET 10's direct C# file execution. These scripts are located in the scripts/ directory:
publish-single-file.cs - Publishes trimmed single-file executablespublish-single-file-untrimmed.cs - Publishes untrimmed single-file executablesrun-tests.cs - Runs unit testsrun-e2e-tests.cs - Runs end-to-end testsgenerate-wolverine-code.cs - Generates Wolverine codeNote: The deprecated build-tool-dll.cs and pack-tool-platform.cs scripts have been removed. Use the Nuke build targets (PackTool, PublishTool) instead.
All Nuke build commands support both Unix/macOS (./build.sh) and Windows (build.cmd or ./build.ps1) bootstrap scripts. Examples below show both formats.
# Unix/macOS: Pack library projects as NuGet packages
./build.sh --target PackLibs
# Windows
build.cmd --target PackLibs
# or
./build.ps1 --target PackLibs
# Pack all projects (libraries and tool)
./build.sh --target PackAll # Unix/macOS
build.cmd --target PackAll # Windows
# Specify configuration and version
./build.sh --target PackLibs --configuration Debug --version 1.2.3
build.cmd --target PackLibs --configuration Debug --version 1.2.3
# Custom output directory
./build.sh --target PackLibs --output-dir ./my-packages
build.cmd --target PackLibs --output-dir ./my-packages
# Build a trimmed single-file executable for a specific platform
./build.sh --target PublishSingleFile --rid linux-x64 # Unix/macOS
build.cmd --target PublishSingleFile --rid linux-x64 # Windows
# Build an AOT (ahead-of-time compiled) executable
./build.sh --target PublishExecutable --rid linux-x64
build.cmd --target PublishExecutable --rid linux-x64
# Build an untrimmed executable (larger, better for debugging)
./build.sh --target PublishSingleFileUntrimmed --rid win-x64
build.cmd --target PublishSingleFileUntrimmed --rid win-x64
# Common RIDs: linux-x64, linux-arm64, win-x64, osx-x64, osx-arm64
# With custom configuration and output directory
./build.sh --target PublishSingleFile --rid linux-x64 --configuration Debug --output-dir ./bin
build.cmd --target PublishSingleFile --rid linux-x64 --configuration Debug --output-dir ./bin
# Pack the Morphir CLI as a dotnet tool
./build.sh --target PackTool # Unix/macOS
build.cmd --target PackTool # Windows
# With version and output directory
./build.sh --target PackTool --version 2.0.0 --output-dir ./packages
build.cmd --target PackTool --version 2.0.0 --output-dir ./packages
# Run unit tests
./build.sh --target Test # Unix/macOS
build.cmd --target Test # Windows
# Run tests in Debug configuration
./build.sh --target Test --configuration Debug
build.cmd --target Test --configuration Debug
# Build E2E test project
./build.sh --target BuildE2ETests
build.cmd --target BuildE2ETests
# Run end-to-end tests
./build.sh --target TestE2E # Unix/macOS
build.cmd --target TestE2E # Windows
# Run E2E tests for specific executable type (aot, trimmed, untrimmed, or all)
./build.sh --target TestE2E --executable-type trimmed
build.cmd --target TestE2E --executable-type trimmed
# Publish library packages to NuGet.org
./build.sh --target PublishLibs --api-key YOUR_API_KEY # Unix/macOS
build.cmd --target PublishLibs --api-key YOUR_API_KEY # Windows
# Publish the Morphir CLI tool package to NuGet.org
./build.sh --target PublishTool --api-key YOUR_API_KEY
build.cmd --target PublishTool --api-key YOUR_API_KEY
# Publish all packages
./build.sh --target PublishAll --api-key YOUR_API_KEY
build.cmd --target PublishAll --api-key YOUR_API_KEY
# Publish to custom NuGet source
./build.sh --target PublishLibs --nuget-source https://custom-feed.com --api-key YOUR_KEY
build.cmd --target PublishLibs --nuget-source https://custom-feed.com --api-key YOUR_KEY
# Publish to local NuGet feed (for testing)
./build.sh --target PublishLocalLibs # Unix/macOS
build.cmd --target PublishLocalLibs # Windows
# With custom local source
./build.sh --target PublishLocalLibs --local-source ./my-local-feed
build.cmd --target PublishLocalLibs --local-source ./my-local-feed
# Install tool locally from package
./build.sh --target PublishLocalTool
build.cmd --target PublishLocalTool
# Install globally
./build.sh --target PublishLocalTool --global true
build.cmd --target PublishLocalTool --global true
Run ./build.sh --help (Unix/macOS) or build.cmd --help (Windows) to see all available targets with descriptions and parameters.
Key targets:
Restore - Restore .NET dependenciesCompile - Build the solution (default target)Test - Run unit testsLint - Check code formattingFormat - Format codeCI - Run full CI pipeline (restore, build, test, lint)PackLibs - Pack library projects as NuGet packagesPackTool - Pack the Morphir CLI as a dotnet toolPackAll - Pack all projects (libraries and tool)PublishSingleFile - Publish trimmed single-file executable (requires --rid)PublishExecutable - Publish AOT executable (requires --rid)PublishSingleFileUntrimmed - Publish untrimmed single-file executable (requires --rid)TestE2E - Run end-to-end testsPublishLibs - Publish library packages to NuGetPublishTool - Publish tool package to NuGetPublishAll - Publish all packages to NuGetPublishLocalLibs - Publish libraries to local feedPublishLocalTool - Install tool locally from packagePublishLocalAll - Publish all to local feedWe welcome contributions! Please see our Contributing Guide for details.
This project is licensed under the Apache License 2.0 - see the file for details.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 net10.0 is compatible. net10.0-android net10.0-android was computed. net10.0-browser net10.0-browser was computed. net10.0-ios net10.0-ios was computed. net10.0-maccatalyst net10.0-maccatalyst was computed. net10.0-macos net10.0-macos was computed. net10.0-tvos net10.0-tvos was computed. net10.0-windows net10.0-windows was computed. |
Showing the top 2 NuGet packages that depend on Morphir.Core:
| Package | Downloads |
|---|---|
|
Morphir.Bogus
Package Description |
|
|
Morphir.Tooling
Package Description |
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.3.0-rc.2 | 238 | 12/19/2025 |
| 0.3.0-rc.1 | 256 | 12/18/2025 |
| 0.2.0-alpha-003 | 251 | 12/16/2025 |
| 0.2.0-alpha-001 | 256 | 12/16/2025 |
| 0.1.0-Alpha-01 | 192 | 5/23/2023 |
### Added
- Ionide.KeepAChangelog integration for changelog-driven versioning
- ChangelogHelper class for parsing and manipulating CHANGELOG.md
- PrepareRelease target for automated release preparation
- **Proto WASM Plugin**: Tool manager plugin for proto (moonrepo.dev/proto) - Enables `proto install morphir` for cross-platform installation - Platform support: Linux (x64, arm64), macOS (x64, arm64), Windows (x64) - Automatic version detection and platform-specific executable downloads - Released as separate plugin-v0.1.0 on GitHub
- **GitHub Release Automation**: Deployment workflow now creates GitHub releases - PackPlatformTarballs Nuke target for creating platform-specific tarballs - CreateGitHubRelease Nuke target for automated release publishing - Release notes with proto installation instructions - Platform-specific executable tarballs as release assets
- **Build System Improvements**: - RunRustCommand helper with intelligent stderr categorization - Proper log levels for Rust/Cargo output (info, warning, error) - PluginVersion parameter for proto plugin versioning