ATech.Ring.DotNet.Cli 1.1.3-beta

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

ring! - one ring to rule them all...

Ring brings order into the messy world of developing and debugging a cloud-ready microservice system side by side with maintaining and migrating legacy ones where you may have many different types of services (ASP.NET Core, Topshelf, WCF) hosted in many different ways (IIS Express, WindowsService, Exe) and scattered across many solutions and repositories.

What is it?

Ring consists of the following part:

  • Service launcher and monitor (a global dotnet tool)
  • Visual Studio Extension (2017, 2019)
  • Visual Studio Code Extension (coming soon)

How it works

Ring groups runnables (mostly services but not only) into workspaces. Workspaces are defined in TOML files. Workspaces are composed from runnables and other workspaces. A workspace can be loaded and started. Ring periodically runs a health check for every runnable, tries restarting the unhealthy ones, and reports the dead ones. Ring also exposes a web socket interface. Visual Studio extensions use it mainly for visualizing workspace/runnables states, turning services off/on for build/debugging if they're a part of the currently loaded project/solution.

Basic facts

  • There is only one Ring instance on your dev machine running at a time
  • There can be multiple clients (VS/VS Code extensions) interacting with Ring at a time although mostly you'd have just one
  • Ring is meant to keep your workspace running even if you quit Visual Studio
  • You can also run Ring in a stand-alone mode which just keeps your workspace running
  • Ring exposes a web socket interface on port 7999

Installation

Ring dotnet tool

dotnet tool install --global ATech.Ring.DotNet.Cli --version 1.1.2-beta

Visual Studio Extension

Make sure you installed the dotnet tool first.

Download here ring! for Visual Studio

Visual Studio Code Extension

Coming soon

Troubleshooting

If ring does not work as expected you can use --debug or -d switch to enable a debug level output.

ring run -w .\path\to\your\workspace.toml -d

Vocabulary

  • runnable - usually a service. Currently the following types are supported:

    • iisexpress - WCF and other services hosted in IIS Express
    • aspnetcore - .NET Core apps running in console
    • netexe - full .NET Framework console apps (like TopShelf)
  • workspace - a logical grouping of runnables defined in TOML file(s). Workspaces can be composed of other workspaces using the import tag. Ring can only run a single workspace at a time. Example workspace:

# your workspace.toml
[[iisexpress]]
csproj = "path/to/your/amazing.name.cool.csproj"

[[iisexpress]]
csproj = "path/to/your/another.name.csproj"

[[import]]
path = "../a/relative/path/to/your/workspace.toml"

Authoring workspaces

Workspaces are written in TOML and they mostly use the arrays of tables to define workspace's components. The following syntax is supported:

Imports another workspace

[[import]]
path = "path/to/another/workspace.toml"

Runs IIS Express hosted full .NET Framework service (e.g. AspNet MVC or WCF)

[[iisexpress]]
csproj = "path/to/your/project.csproj"

Runs full .NET Framework executable project

[[netexe]]
csproj = "path/to/your/project.csproj"

Runs NET Core web project (e.g. AspNet Core MVC)

[[aspnetcore]]
csproj = "/path/to/your/project.csproj"

Comments

# This is a comment
# [[aspnetcore]]
# csproj = "/path/to/your/project.csproj"

If the same service is declared multiple times in imported workspaces they will be deduplicated and only one instance of a service (based on the project path) will be launched.

How to contribute

Coming soon

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
.NET Core netcoreapp2.2 is compatible.  netcoreapp3.0 was computed.  netcoreapp3.1 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
5.1.0-alpha.1 103 1/16/2024
5.0.3 100 10/2/2024
5.0.2 86 9/30/2024
5.0.1 94 9/30/2024
5.0.0 278 1/14/2024
5.0.0-alpha.1 60 1/13/2024
4.3.0 192 1/12/2024
4.3.0-alpha.2 71 1/12/2024
4.3.0-alpha.1 69 1/12/2024
4.2.0 258 12/8/2023
4.1.0 187 12/8/2023
4.1.0-alpha.2 78 12/6/2023
4.1.0-alpha.1 71 12/6/2023
4.0.1 197 12/6/2023
4.0.1-alpha.4 73 12/5/2023
4.0.1-alpha.3 73 12/5/2023
4.0.1-alpha.2 84 12/4/2023
4.0.1-alpha.1 77 12/4/2023
4.0.0 209 6/23/2023
4.0.0-beta.4 105 5/7/2023
4.0.0-beta.3 95 5/3/2023
4.0.0-beta.2 95 5/3/2023
4.0.0-beta.1 98 3/7/2023
4.0.0-alpha.9 102 11/1/2022
4.0.0-alpha.8 111 11/1/2022
4.0.0-alpha.7 119 10/28/2022
4.0.0-alpha.6 115 10/28/2022
4.0.0-alpha.5 118 9/1/2022
4.0.0-alpha.4 113 8/23/2022
4.0.0-alpha.3 108 8/23/2022
4.0.0-alpha.2 103 8/23/2022
4.0.0-alpha.1 120 8/22/2022
3.2.0-alpha.2 119 8/19/2022
3.2.0-alpha.1 122 8/19/2022
3.1.2 479 1/3/2022
3.1.2-alpha.4 144 1/3/2022
3.1.2-alpha.3 139 1/3/2022
3.1.2-alpha.2 133 1/3/2022
3.1.2-alpha.1 133 1/3/2022
3.1.1 323 12/31/2021
3.1.1-alpha.1 122 12/31/2021
3.1.0 303 12/30/2021
3.0.1-alpha.1 145 12/13/2021
3.0.0-alpha.1 1,072 11/28/2021
2.5.1 417 11/11/2021
2.5.0 365 11/11/2021
2.5.0-alpha.2 211 9/12/2021
2.5.0-alpha.1 187 9/10/2021
2.4.4 414 9/9/2021
2.4.4-pre.3 156 2/26/2021
2.4.4-pre.2 163 2/5/2021
2.4.4-pre.1 202 2/3/2021
2.4.3 495 1/25/2021
2.4.3-pre.1 195 1/15/2021
2.4.2 534 1/10/2021
2.4.2-pre.10 300 11/24/2020
2.4.2-pre.9 215 11/23/2020
2.4.2-pre.8 227 11/17/2020
2.4.2-pre.7 235 11/17/2020
2.4.2-pre.6 222 11/17/2020
2.4.2-pre.5 240 11/16/2020
2.4.2-pre.4 252 11/12/2020
2.4.2-pre.3 268 10/30/2020
2.4.2-pre.2 215 10/29/2020
2.4.2-pre.1 246 10/26/2020
2.4.1 502 10/13/2020
2.4.1-pre.6 255 10/5/2020
2.4.1-pre.5 276 10/5/2020
2.4.1-pre.4 255 10/3/2020
2.4.1-pre.3 247 10/3/2020
2.4.1-pre.1 280 10/3/2020
2.4.0 587 9/22/2020
2.4.0-pre.12 286 9/22/2020
2.4.0-pre.11 298 9/17/2020
2.4.0-pre.10 313 9/16/2020
2.4.0-pre.9 317 9/16/2020
2.4.0-pre.8 329 9/9/2020
2.4.0-pre.7 300 9/2/2020
2.4.0-pre.6 260 9/1/2020
2.4.0-pre.5 251 8/28/2020
2.4.0-pre.4 244 8/27/2020
2.4.0-pre.3 243 8/27/2020
2.4.0-pre.2 247 8/27/2020
2.4.0-pre.1 319 7/9/2020
2.3.5-pre.1 244 8/28/2020
2.3.4 647 6/11/2020
2.3.4-pre 539 4/8/2020
2.3.3-pre 470 4/2/2020
2.3.2-pre 521 3/20/2020
2.3.1-pre 587 3/20/2020 2.3.1-pre is deprecated because it has critical bugs.
2.3.0-pre 578 3/20/2020 2.3.0-pre is deprecated because it has critical bugs.
2.2.1-pre 501 1/29/2020
2.2.0-pre 496 1/27/2020
2.1.0-pre 529 1/17/2020
2.0.0 770 9/25/2019
1.1.10 713 9/22/2019
1.1.9 669 9/17/2019
1.1.8 694 9/17/2019
1.1.7 692 9/17/2019
1.1.5-beta 2,127 7/22/2019
1.1.4-beta 621 7/9/2019
1.1.3-beta 583 7/8/2019
1.1.2-beta 610 6/12/2019
1.1.1-beta 681 6/7/2019
1.1.0-beta 615 6/3/2019
1.0.0-beta 650 5/20/2019

Bugfix: exception when trying to add an already existing environment variable to ProcessStartInfo; Memory optimizations