2dog 4.7.2.81

There is a newer version of this package available.
See the version list below for details.
dotnet tool install --global 2dog --version 4.7.2.81
                    
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 2dog --version 4.7.2.81
                    
This package contains a .NET tool you can call from the shell/command line.
#tool dotnet:?package=2dog&version=4.7.2.81
                    
nuke :add-package 2dog --version 4.7.2.81
                    

2dog

Command-line tool and project templates for 2dog – run Godot as a library from your own .NET entry point. It scaffolds host projects, checks and repairs them (2dog doctor), and updates them (2dog update). The engine library itself is the 2dog.engine package.

This one package is both a dotnet tool and a dotnet new template package.

Run it

One-shot (no install, .NET 10+):

dnx 2dog add         # add hosts to the Godot project here
dnx 2dog new MyGame  # a new Godot project with 2dog hosts
dnx 2dog doctor      # check the project and this machine, fix what it can
dnx 2dog update      # bring the 2dog packages to this tool's versions

Or install the 2dog command globally:

dotnet tool install -g 2dog
2dog add

With no host options the tool prompts: a checkbox list of hosts, editable folder names, the plan, and a confirmation. Naming any host option (or passing --yes) runs it unattended instead. The dotnet new template produces the same output: dotnet new install 2dog && dotnet new 2dog -n MyGame.

What it does

Creates the host projects in place: it creates files and edits *.csproj, project.godot, the solution and Directory.Build.props; no file is ever moved, renamed or deleted (two announced opt-ins aside: the .sln to .slnx migration and --rename). The Godot project directory becomes the solution root, and host projects are scaffolded as nested subfolders that the Godot editor ignores (each carries a .gdignore):

MyGame/                      <- your existing Godot project (unchanged)
  project.godot
  MyGame.csproj              <- created or minimally patched
  MyGame.slnx                <- created, or an existing .sln is migrated
  Directory.Build.props      <- the package versions every host references
  MyGame.2dog/   (.gdignore) <- desktop host (your Main entry point)
  MyGame.web/    (.gdignore) <- browser (WebAssembly) host (holds TwoDogWebBoot.cs)
  MyGame.webxr/  (.gdignore) <- WebXR browser host (opt-in: --webxr; page ships the WebXR Layers polyfill)
  MyGame.tests/  (.gdignore) <- xUnit test project
  MyGame.winforms/ (.gdignore) <- WinForms host (opt-in: --winforms; Windows-only at runtime)
  MyGame.winui/  (.gdignore) <- WinUI 3 host (opt-in: --winui; Windows-only, builds only on Windows)
  MyGame.avalonia/ (.gdignore) <- Avalonia host (opt-in: --avalonia; cross-platform GUI)
  MyGame.blazor/ (.gdignore) <- Blazor Web App host (opt-in: --blazor; server + Client/ WebAssembly page)

Run it again whenever you want another host – hosts that exist are recognized and left alone, and a kind you already have is added a second time under a free folder name (2dog add --desktop MyGame.editor).

Commands:

Command Effect
2dog Print version info and usage
2dog new [Name] [dir] Create a new Godot project with 2dog hosts
2dog add [path] Add hosts to an existing Godot project
2dog convert [path] Alias of add, for projects that have no hosts yet
2dog doctor [path] Check the project and this machine; --fix applies the safe fixes; --build / --log explain build failures
2dog update [path] Update the project's 2dog packages to this tool's versions (never downgrades)
2dog pack list <file.pck> List a .pck's contents by size (no engine involved)
2dog version Print the tool and package versions
2dog help [verb] Usage, or the help for one verb

Options:

Option Effect
--desktop [folder], --web [folder], --webxr [folder], --tests [folder], --winforms [folder], --winui [folder], --avalonia [folder], --blazor [folder] Add a host, optionally in a named folder (repeatable; webxr, winforms, winui, avalonia, and blazor are opt-in and never in the default set)
--no-desktop, --no-web, --no-tests Leave a host out of the default set
-n, --name <BaseName> Project name (new) or base name override
--rename <NewName> Fix a .NET project name that contains spaces (add/convert, before any hosts exist)
-o, --output <dir> Directory for a new project
-y, --yes, --non-interactive Do not prompt; take the flags and defaults
--dry-run Print planned actions without changing anything
--force Overwrite files that already exist (never deletes/moves)
--no-restore Skip the final dotnet restore
--allow-dirty update: proceed with uncommitted git changes
--fix, --fix-all, --build [target], -c, --configuration <Cfg>, --log <file>, --ignore <id>, --strict, --offline, --list-checks doctor options; see 2dog doctor --help
--json, -q, --quiet, --plain, --no-color, --accessible, -v, --verbose Output modes: machine-readable, terse, no styling, screen-reader friendly, extra detail
-h, --help, --version Help (per verb after a verb), versions

Exit codes: 0 ok, 1 usage error, 2 tool error, 3 doctor findings remain, 130 cancelled. The report goes to stdout, diagnostics to stderr; nothing prompts in a pipe or in CI. Full reference: https://2dog.dev/dnx-2dog

Using the library directly

This package cannot be referenced from a project (it is a tool package); reference the engine instead:

dotnet add package 2dog.engine

This package has no dependencies.

Version Downloads Last Updated
4.7.2.82 47 9/4/2026
4.7.2.81 62 9/3/2026
4.7.2.80 67 9/3/2026
4.7.2.78 111 8/30/2026
4.7.2.77 107 8/27/2026
4.7.2.76 93 8/27/2026
4.7.2.75 100 8/26/2026
4.7.2.74 93 8/26/2026
4.7.1.73 236 8/16/2026
4.7.1.72 98 8/16/2026
4.7.1.71 121 8/14/2026
4.7.1.70 142 8/11/2026
4.7.1.69 106 8/11/2026
4.7.1.68 133 8/6/2026
4.7.1.67 108 8/6/2026
4.7.1.66 122 8/5/2026
4.7.1.65 137 7/30/2026
4.7.1.64 118 7/29/2026
4.7.1.63 103 7/29/2026
4.7.1.62 108 7/29/2026
Loading failed