ATech.Ring.DotNet.Cli
1.1.10
See the version list below for details.
dotnet tool install --global ATech.Ring.DotNet.Cli --version 1.1.10
dotnet new tool-manifest # if you are setting up this repo dotnet tool install --local ATech.Ring.DotNet.Cli --version 1.1.10
#tool dotnet:?package=ATech.Ring.DotNet.Cli&version=1.1.10
nuke :add-package ATech.Ring.DotNet.Cli --version 1.1.10
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 (early preview)
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.10
Visual Studio Extension
Make sure you installed the dotnet tool first.
Download here ring! for Visual Studio
Visual Studio Code Extension
Download an early preview
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 consolenetexe
- full .NET Framework console apps (like TopShelf)dockercompose
- docker-compose files
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"
Runs Docker Compose file
[[dockercompose]]
path = "path/to/docker-compose.yml"
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
Release notes
1.1.10
- IISExpress Runnable: enable retrieval of custom binding information from csproj files
Ring uses /Project/ProjectExtensions/VisualStudio/FlavorProperties/WebProjectProperties
to determine how to run a particular project.
So far it used DevelopmentServerPort
and assume localhost
. From now on it will use the URL specified at IISUrl
instead.
1.1.9
- Logging improvements.
1.1.8
- Fixed System.ArgumentOutOfRangeException if runnable is dead.
1.1.7
- Fixed swallowing exceptions if one of the base tasks fails.
- Fixed Microsoft.AspNetCore.WebSockets reference.
1.1.6
- Added support for docker-compose files
- Fixed a bug on capturing output of exited processes
Product | Versions 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. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. |
.NET Core | netcoreapp2.2 is compatible. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
This package has no dependencies.
Version | Downloads | Last updated | |
---|---|---|---|
5.1.0-alpha.1 | 110 | 1/16/2024 | |
5.0.3 | 126 | 10/2/2024 | |
5.0.2 | 98 | 9/30/2024 | |
5.0.1 | 106 | 9/30/2024 | |
5.0.0 | 285 | 1/14/2024 | |
5.0.0-alpha.1 | 65 | 1/13/2024 | |
4.3.0 | 199 | 1/12/2024 | |
4.3.0-alpha.2 | 76 | 1/12/2024 | |
4.3.0-alpha.1 | 74 | 1/12/2024 | |
4.2.0 | 267 | 12/8/2023 | |
4.1.0 | 194 | 12/8/2023 | |
4.1.0-alpha.2 | 83 | 12/6/2023 | |
4.1.0-alpha.1 | 76 | 12/6/2023 | |
4.0.1 | 204 | 12/6/2023 | |
4.0.1-alpha.4 | 80 | 12/5/2023 | |
4.0.1-alpha.3 | 78 | 12/5/2023 | |
4.0.1-alpha.2 | 89 | 12/4/2023 | |
4.0.1-alpha.1 | 82 | 12/4/2023 | |
4.0.0 | 216 | 6/23/2023 | |
4.0.0-beta.4 | 110 | 5/7/2023 | |
4.0.0-beta.3 | 100 | 5/3/2023 | |
4.0.0-beta.2 | 100 | 5/3/2023 | |
4.0.0-beta.1 | 102 | 3/7/2023 | |
4.0.0-alpha.9 | 107 | 11/1/2022 | |
4.0.0-alpha.8 | 116 | 11/1/2022 | |
4.0.0-alpha.7 | 124 | 10/28/2022 | |
4.0.0-alpha.6 | 120 | 10/28/2022 | |
4.0.0-alpha.5 | 123 | 9/1/2022 | |
4.0.0-alpha.4 | 120 | 8/23/2022 | |
4.0.0-alpha.3 | 113 | 8/23/2022 | |
4.0.0-alpha.2 | 108 | 8/23/2022 | |
4.0.0-alpha.1 | 125 | 8/22/2022 | |
3.2.0-alpha.2 | 124 | 8/19/2022 | |
3.2.0-alpha.1 | 127 | 8/19/2022 | |
3.1.2 | 492 | 1/3/2022 | |
3.1.2-alpha.4 | 149 | 1/3/2022 | |
3.1.2-alpha.3 | 143 | 1/3/2022 | |
3.1.2-alpha.2 | 138 | 1/3/2022 | |
3.1.2-alpha.1 | 138 | 1/3/2022 | |
3.1.1 | 332 | 12/31/2021 | |
3.1.1-alpha.1 | 129 | 12/31/2021 | |
3.1.0 | 312 | 12/30/2021 | |
3.0.1-alpha.1 | 150 | 12/13/2021 | |
3.0.0-alpha.1 | 1,077 | 11/28/2021 | |
2.5.1 | 428 | 11/11/2021 | |
2.5.0 | 377 | 11/11/2021 | |
2.5.0-alpha.2 | 219 | 9/12/2021 | |
2.5.0-alpha.1 | 193 | 9/10/2021 | |
2.4.4 | 423 | 9/9/2021 | |
2.4.4-pre.3 | 161 | 2/26/2021 | |
2.4.4-pre.2 | 168 | 2/5/2021 | |
2.4.4-pre.1 | 207 | 2/3/2021 | |
2.4.3 | 505 | 1/25/2021 | |
2.4.3-pre.1 | 202 | 1/15/2021 | |
2.4.2 | 545 | 1/10/2021 | |
2.4.2-pre.10 | 307 | 11/24/2020 | |
2.4.2-pre.9 | 222 | 11/23/2020 | |
2.4.2-pre.8 | 234 | 11/17/2020 | |
2.4.2-pre.7 | 240 | 11/17/2020 | |
2.4.2-pre.6 | 229 | 11/17/2020 | |
2.4.2-pre.5 | 245 | 11/16/2020 | |
2.4.2-pre.4 | 257 | 11/12/2020 | |
2.4.2-pre.3 | 273 | 10/30/2020 | |
2.4.2-pre.2 | 222 | 10/29/2020 | |
2.4.2-pre.1 | 250 | 10/26/2020 | |
2.4.1 | 512 | 10/13/2020 | |
2.4.1-pre.6 | 259 | 10/5/2020 | |
2.4.1-pre.5 | 281 | 10/5/2020 | |
2.4.1-pre.4 | 262 | 10/3/2020 | |
2.4.1-pre.3 | 252 | 10/3/2020 | |
2.4.1-pre.1 | 287 | 10/3/2020 | |
2.4.0 | 596 | 9/22/2020 | |
2.4.0-pre.12 | 291 | 9/22/2020 | |
2.4.0-pre.11 | 303 | 9/17/2020 | |
2.4.0-pre.10 | 319 | 9/16/2020 | |
2.4.0-pre.9 | 322 | 9/16/2020 | |
2.4.0-pre.8 | 334 | 9/9/2020 | |
2.4.0-pre.7 | 304 | 9/2/2020 | |
2.4.0-pre.6 | 265 | 9/1/2020 | |
2.4.0-pre.5 | 256 | 8/28/2020 | |
2.4.0-pre.4 | 250 | 8/27/2020 | |
2.4.0-pre.3 | 249 | 8/27/2020 | |
2.4.0-pre.2 | 253 | 8/27/2020 | |
2.4.0-pre.1 | 324 | 7/9/2020 | |
2.3.5-pre.1 | 250 | 8/28/2020 | |
2.3.4 | 657 | 6/11/2020 | |
2.3.4-pre | 544 | 4/8/2020 | |
2.3.3-pre | 475 | 4/2/2020 | |
2.3.2-pre | 525 | 3/20/2020 | |
2.3.1-pre | 592 | 3/20/2020 | |
2.3.0-pre | 583 | 3/20/2020 | |
2.2.1-pre | 504 | 1/29/2020 | |
2.2.0-pre | 501 | 1/27/2020 | |
2.1.0-pre | 535 | 1/17/2020 | |
2.0.0 | 779 | 9/25/2019 | |
1.1.10 | 725 | 9/22/2019 | |
1.1.9 | 679 | 9/17/2019 | |
1.1.8 | 705 | 9/17/2019 | |
1.1.7 | 702 | 9/17/2019 | |
1.1.5-beta | 2,133 | 7/22/2019 | |
1.1.4-beta | 628 | 7/9/2019 | |
1.1.3-beta | 588 | 7/8/2019 | |
1.1.2-beta | 613 | 6/12/2019 | |
1.1.1-beta | 686 | 6/7/2019 | |
1.1.0-beta | 620 | 6/3/2019 | |
1.0.0-beta | 655 | 5/20/2019 |
* Added support for custom domain iis express bindings.