Skip to content


Crossroads (Packaging tool)

Lifecycle Active OpenSSF Scorecard CI


Crossroads is a dotnet core commandline tool packager for developers. This is a generic solution to host any application within Crossroads package executable and further launches application's executable. Developers will specify arguments such as name, icon, version etc for branding during the package generation. The specified argument name will be used to rebrand the internal application.

Why Use Crossroads

Crossroads allows you to:

  • create an executable package.
  • customise your package with a name, icon, version and other attributes
  • run applications through crossroads generated package


To install crossroads as a global dotnet tool:

dotnet tool install -g MorganStanley.Crossroads

To get the list of available commands:

crossroads --help

How to use

Package Notepad

crossroads package --name newnotepad --command "notepad"

Package Notepad and open a text file from include

crossroads package --name newhello --command notepad --args .\notepadtxt\abc.txt --location .\output --icon .\testicon.ico --version "2.2.2" --include ".\notepadtxt"

Package an application from include directory

crossroads package --name newhello --command ".\helloworld\helloworld.exe" --location .\output --icon .\testcion.ico --version "3.0.1" --include ".\helloworld"

Inspect a package

crossroads inspect --package ".\testapp.exe"

Show help

crossroads --help

Execute generated app


Execute generated with override arguments

<appname>.exe --args "new args"

How to Develop

Build the solution

dotnet build

Test and test with coverage

dotnet test
dotnet test -maxcpucount:1 -p:CollectCoverage=true -p:CoverletOutput="..\TestResults\" -p:MergeWith="..\TestResults\coverage.json"


dotnet build -c:release
dotnet publish .\src\Crossroads\Crossroads.csproj -c:release --no-build

Crossroads on Linux

For information about how to use our application on the linux environment kindly click here.