{"id":18603016,"url":"https://github.com/devlooped/dotnet-vs","last_synced_at":"2025-08-20T20:32:51.904Z","repository":{"id":38339729,"uuid":"238593602","full_name":"devlooped/dotnet-vs","owner":"devlooped","description":"A global tool for managing Visual Studio installations","archived":false,"fork":false,"pushed_at":"2024-12-05T18:32:18.000Z","size":382,"stargazers_count":49,"open_issues_count":15,"forks_count":7,"subscribers_count":3,"default_branch":"main","last_synced_at":"2024-12-08T14:41:00.672Z","etag":null,"topics":["dotnet","dotnet-tool"],"latest_commit_sha":null,"homepage":"https://clarius.org/dotnet-vs","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/devlooped.png","metadata":{"files":{"readme":"readme.md","changelog":"changelog.md","contributing":null,"funding":".github/FUNDING.yml","license":"license.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"devlooped"}},"created_at":"2020-02-06T02:43:16.000Z","updated_at":"2024-10-22T19:05:24.000Z","dependencies_parsed_at":"2024-06-25T09:25:08.351Z","dependency_job_id":"1ace1c65-9987-4cef-bd6e-6f8449af631b","html_url":"https://github.com/devlooped/dotnet-vs","commit_stats":null,"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devlooped%2Fdotnet-vs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devlooped%2Fdotnet-vs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devlooped%2Fdotnet-vs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devlooped%2Fdotnet-vs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/devlooped","download_url":"https://codeload.github.com/devlooped/dotnet-vs/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":230454431,"owners_count":18228392,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dotnet","dotnet-tool"],"created_at":"2024-11-07T02:13:15.924Z","updated_at":"2025-08-20T20:32:51.864Z","avatar_url":"https://github.com/devlooped.png","language":"C#","funding_links":["https://github.com/sponsors/devlooped","https://github.com/sponsors"],"categories":[],"sub_categories":[],"readme":"![Icon](https://raw.githubusercontent.com/devlooped/dotnet-vs/main/docs/img/icon-32.png) dotnet-vs\n============\n\nA global tool for running, managing and querying Visual Studio installations\n\n[![Version](https://img.shields.io/nuget/v/dotnet-vs.svg?color=royalblue)](https://www.nuget.org/packages/dotnet-vs)\n[![Downloads](https://img.shields.io/nuget/dt/dotnet-vs.svg?color=darkmagenta)](https://www.nuget.org/packages/dotnet-vs)\n[![License](https://img.shields.io/github/license/devlooped/dotnet-vs.svg?color=blue)](https://github.com/devlooped/dotnet-vs/blob/master/license.txt)\n[![CI Status](https://github.com/devlooped/dotnet-vs/workflows/build/badge.svg?branch=main)](https://github.com/devlooped/dotnet-vs/actions?query=branch%3Amain+workflow%3Abuild+)\n[![CI Version](https://img.shields.io/endpoint?label=nuget.ci\u0026color=brightgreen\u0026url=https://shields.kzu.app/vpre/dotnet-vs/main)](https://pkg.kzu.app/index.json)\n\nInstalling or updating (same command for both):\n\n```\ndotnet tool update -g dotnet-vs\n```\n\nTo get the CI version:\n\n```\ndotnet tool update -g dotnet-vs --no-cache --add-source https://pkg.kzu.app/index.json\n```\n\nCommand line parsing is done with [Mono.Options](https://www.nuget.org/packages/mono.options) so \nall the following variants for arguments are supported: `-flag`, `--flag`, `/flag`, `-flag=value`, `--flag=value`, \n`/flag=value`, `-flag:value`, `--flag:value`, `/flag:value`, `-flag value`, `--flag value`, `/flag value`.\n\nSupported commands:\n\n\n## alias\n\nShows the list of saved aliases\n\n```\nUsage: vs alias [options]\n```\n\nAll built-in commands support a `-save:[alias]` option that will cause \nthe command to be saved with that alias. From that point on, it's possible \nto just run the command (including all saved arguments) by just running \nthe alias instead.\n\nExamples:\n\n\u003c!-- EXAMPLES_BEGIN --\u003e\n```\n# Save the first VS enterprise with the Xamarin/Mobile workload as the \"mobile\" alias\n\u003e vs -sku:ent -first +mobile -save:mobile\n\n# Runs the saved alias with all the original arguments\n\u003e vs mobile\n```\n\u003c!-- EXAMPLES_END --\u003e\n\n## client\n\nLaunches Visual Studio in client mode\n\n```\nUsage: vs client [options]\n```\n\n|Option|Description|\n|-|-|\n| `rel\\|release` | Run release version |\n| `pre\\|preview` | Run preview version |\n| `int\\|internal` | Run internal (aka 'dogfood') version |\n| `sku:` | Edition, one of `e\\|ent\\|enterprise`, `p\\|pro\\|professional`, `c\\|com\\|community`, `b\\|build\\|buildtools` or `t\\|test\\|testagent` |\n| `filter:` | Expression to filter VS instances. E.g. `x =\u003e x.InstanceId = '123'` |\n| `first` | Run first matching instance. |\n| `exp\\|experimental` | Run experimental instance instead of regular. |\n| `w\\|workspaceId:` | The workspace ID to connect to |\n\n\n## config\n\nOpens the config folder.\n\n```\nUsage: vs config [options]\n```\n\n|Option|Description|\n|-|-|\n| `rel\\|release` | open release version |\n| `pre\\|preview` | open preview version |\n| `int\\|internal` | open internal (aka 'dogfood') version |\n| `sku:` | Edition, one of `e\\|ent\\|enterprise`, `p\\|pro\\|professional`, `c\\|com\\|community`, `b\\|build\\|buildtools` or `t\\|test\\|testagent` |\n| `filter:` | Expression to filter VS instances. E.g. `x =\u003e x.InstanceId = '123'` |\n| `first` | open first matching instance. |\n| `exp\\|experimental` | open experimental instance instead of regular. |\n\n\n## install\n\nInstalls a specific edition of Visual Studio.\n\n```\nUsage: vs install [options]\n```\n\n|Option|Description|\n|-|-|\n| `rel\\|release` | install release version |\n| `pre\\|preview` | install preview version |\n| `int\\|internal` | install internal (aka 'dogfood') version |\n| `sku:` | Edition, one of `e\\|ent\\|enterprise`, `p\\|pro\\|professional`, `c\\|com\\|community`, `b\\|build\\|buildtools` or `t\\|test\\|testagent` |\n| `filter:` | Expression to filter VS instances. E.g. `x =\u003e x.InstanceId = '123'` |\n| `add:` | A workload ID |\n\n\nYou can add specific workload IDs by using the supported [workload switches](#workload-id-switches) \nusing the `+` prefix.\n\nSee the [documentation for the Visual Studio installer command line options](https://docs.microsoft.com/en-us/visualstudio/install/use-command-line-parameters-to-install-visual-studio?view=vs-2019#install-options) \nfor the full list of arguments that can be provided.\n\nCommon options are `--passive`, `quiet` and `--wait`, for example.\n\nExamples:\n\n\u003c!-- EXAMPLES_BEGIN --\u003e\n```\n# Installs VS enterprise with the Maui/Mobile workload\n# Note the -sku: switch/prefix is optional\n\u003e vs install Enterprise +mobile\n\n# Install VS community with the .NET Core, ASP.NET and Azure workloads, \n# shows installation progress and waits for it to finish before returning\n\u003e vs install +core +web +azure\n```\n\u003c!-- EXAMPLES_END --\u003e\n\n## kill\n\nKills running devenv processes.\n\n```\nUsage: vs kill [options]\n```\n\n|Option|Description|\n|-|-|\n| `rel\\|release` | kill release version |\n| `pre\\|preview` | kill preview version |\n| `int\\|internal` | kill internal (aka 'dogfood') version |\n| `sku:` | Edition, one of `e\\|ent\\|enterprise`, `p\\|pro\\|professional`, `c\\|com\\|community`, `b\\|build\\|buildtools` or `t\\|test\\|testagent` |\n| `filter:` | Expression to filter VS instances. E.g. `x =\u003e x.InstanceId = '123'` |\n| `exp\\|experimental` | kill experimental instance instead of regular. |\n| `first` | kill first matching instance. |\n| `all` | kill all instances. |\n\n\nExamples:\n\n\u003c!-- EXAMPLES_BEGIN --\u003e\n```\n# Kill all running instances of Visual Studio\n\u003e vs kill all\n```\n\u003c!-- EXAMPLES_END --\u003e\n\n## log\n\nOpens the folder containing the Activity.log file.\n\n```\nUsage: vs log [options]\n```\n\n|Option|Description|\n|-|-|\n| `rel\\|release` | open release version |\n| `pre\\|preview` | open preview version |\n| `int\\|internal` | open internal (aka 'dogfood') version |\n| `sku:` | Edition, one of `e\\|ent\\|enterprise`, `p\\|pro\\|professional`, `c\\|com\\|community`, `b\\|build\\|buildtools` or `t\\|test\\|testagent` |\n| `filter:` | Expression to filter VS instances. E.g. `x =\u003e x.InstanceId = '123'` |\n| `first` | open first matching instance. |\n| `exp\\|experimental` | open experimental instance instead of regular. |\n\n\n## modify\n\nModifies an installation of Visual Studio.\n\n```\nUsage: vs modify [options]\n```\n\n|Option|Description|\n|-|-|\n| `rel\\|release` | modify release version |\n| `pre\\|preview` | modify preview version |\n| `int\\|internal` | modify internal (aka 'dogfood') version |\n| `sku:` | Edition, one of `e\\|ent\\|enterprise`, `p\\|pro\\|professional`, `c\\|com\\|community`, `b\\|build\\|buildtools` or `t\\|test\\|testagent` |\n| `filter:` | Expression to filter VS instances. E.g. `x =\u003e x.InstanceId = '123'` |\n| `first` | modify first matching instance. |\n| `add:` | A workload ID |\n| `remove:` | A workload ID |\n\n\nA shorthand notation is available for `add|remove [workload ID]` via the supported \nworkload ID switches/aliases, using the `+` (for `add`) and `-` (for `remove`) prefixes.\n\nExamples:\n\n\u003c!-- EXAMPLES_BEGIN --\u003e\n```\n# Add .NET Core Workload to installed Visual Studio Preview\n\u003e vs modify preview +core\n```\n\u003c!-- EXAMPLES_END --\u003e\n\n## run\n\nThis is default command, so typically it does not need to be provided as an argument.\n\n```\nUsage: vs run [options]\n```\n\n|Option|Description|\n|-|-|\n| `rel\\|release` | run release version |\n| `pre\\|preview` | run preview version |\n| `int\\|internal` | run internal (aka 'dogfood') version |\n| `sku:` | Edition, one of `e\\|ent\\|enterprise`, `p\\|pro\\|professional`, `c\\|com\\|community`, `b\\|build\\|buildtools` or `t\\|test\\|testagent` |\n| `filter:` | Expression to filter VS instances. E.g. `x =\u003e x.InstanceId = '123'` |\n| `exp\\|experimental` | run experimental instance instead of regular. |\n| `id:` | Run a specific instance by its ID |\n| `f\\|first` | If more than one instance matches the criteria, run the first one sorted by descending build version. |\n| `v\\|version:` | Run specific (semantic) version, such as 16.4 or 16.5.3. |\n| `w\\|wait` | Wait for the started Visual Studio to exit. |\n| `nr\\|nodereuse` | Disable MSBuild node reuse. Useful when testing analyzers, tasks and targets. Defaults to true when running experimental instance. |\n| `default` | Set as the default version to run when no arguments are provided, or remove the current default (with --default-). |\n| `requires:` | A workload ID |\n\n\nAll [workload switches](#workload-id-switches) are available too to filter the \ninstance to run, including using the `+` prefix/alias syntax.\n\nThis command will remember the last VS that was located and run. So the next time you \ncan just run the same instance by simply using `vs` (since `run` is the default command \nand can be omitted).\n\nExamples:\n\n\u003c!-- EXAMPLES_BEGIN --\u003e\n```\n# Runs the first VS enterprise with the Maui workload\n\u003e vs -sku:ent -first +maui\n\n# Runs VS 16.8\n\u003e vs -v:16.8\n\n# Runs VS 16.9 preview\n\u003e vs -v:16.9 -pre\n\n# Runs the last VS that was run\n\u003e vs\n```\n\u003c!-- EXAMPLES_END --\u003e\n\n## update\n\nUpdates an installation of Visual Studio.\n\n```\nUsage: vs update [options]\n```\n\n|Option|Description|\n|-|-|\n| `rel\\|release` | Update release version |\n| `pre\\|preview` | Update preview version |\n| `int\\|internal` | Update internal (aka 'dogfood') version |\n| `sku:` | Edition, one of `e\\|ent\\|enterprise`, `p\\|pro\\|professional`, `c\\|com\\|community`, `b\\|build\\|buildtools` or `t\\|test\\|testagent` |\n| `filter:` | Expression to filter VS instances. E.g. `x =\u003e x.InstanceId = '123'` |\n| `first` | Update first matching instance. |\n| `all` | Update all instances. |\n\n\n## where\n\nLocates the installed version(s) of Visual Studio that satisfy the requested requirements, optionally retrieving installation properties from it.\n\n```\nUsage: vs where [options]\n```\n\n|Option|Description|\n|-|-|\n| `rel\\|release` | show release version |\n| `pre\\|preview` | show preview version |\n| `int\\|internal` | show internal (aka 'dogfood') version |\n| `sku:` | Edition, one of `e\\|ent\\|enterprise`, `p\\|pro\\|professional`, `c\\|com\\|community`, `b\\|build\\|buildtools` or `t\\|test\\|testagent` |\n| `filter:` | Expression to filter VS instances. E.g. `x =\u003e x.InstanceId = '123'` |\n| `first` | show first matching instance. |\n| `prop\\|property:` | The name of a property to return |\n| `list` | Shows result as a list |\n| `requires:` | A workload ID |\n\n\nSupports same options as `vswhere.exe`:\n\n```\n  -all           Finds all instances even if they are incomplete and may not launch.\n  -prerelease    Also searches prereleases. By default, only releases are searched.\n  -products arg  One or more product IDs to find. Defaults to Community, Professional, and Enterprise.\n                 Specify \"*\" by itself to search all product instances installed.\n                 See https://aka.ms/vs/workloads for a list of product IDs.\n  -requires arg  One or more workload or component IDs required when finding instances.\n                 All specified IDs must be installed unless -requiresAny is specified.\n                 See https://aka.ms/vs/workloads for a list of workload and component IDs.\n  -requiresAny   Find instances with any one or more workload or components IDs passed to -requires.\n  -version arg   A version range for instances to find. Example: [15.0,16.0) will find versions 15.*.\n  -latest        Return only the newest version and last installed.\n  -sort          Sorts the instances from newest version and last installed to oldest.\n                 When used with \"find\", first instances are sorted then files are sorted lexigraphically.\n  -legacy        Also searches Visual Studio 2015 and older products. Information is limited.\n                 This option cannot be used with either -products or -requires.\n  -format arg    Return information about instances found in a format described below.\n  -property arg  The name of a property to return. Defaults to \"value\" format.\n                 Use delimiters \".\", \"/\", or \"_\" to separate object and property names.\n                 Example: \"properties.nickname\" will return the \"nickname\" property under \"properties\".\n  -include arg   One or more extra properties to include, as described below.\n  -find arg      Returns matching file paths under the installation path. Defaults to \"value\" format.\n                 The following patterns are supported:\n                 ?  Matches any one character except \"\\\".\n                 *  Matches zero or more characters except \"\\\".\n                 ** Searches the current directory and subdirectories for the remaining search pattern.\n  -nologo        Do not show logo information. Some formats noted below will not show a logo anyway.\n  -utf8          Use UTF-8 encoding (recommended for JSON).\n  -?, -h, -help  Display this help message.\n\n\nExtra properties:\n  packages       Return an array of packages installed in this instance.\n                 Supported only by the \"json\" and \"xml\" formats.\n\nFormats:\n  json           An array of JSON objects for each instance (no logo).\n  text           Colon-delimited properties in separate blocks for each instance (default).\n  value          A single property specified by the -property parameter (no logo).\n  xml            An XML data set containing instances (no logo).\n```\n\nA shorthand notation is available for `-requires [workload ID]` via the supported \nworkload ID switches, using the `+` prefix (see below).\n\nSee also [vswhere on GitHub](https://github.com/microsoft/vswhere).\n\n\n## Workload ID switches\n\nFor commands that receive workload ID switches (i.e. `vs where -requires [WORKLOAD_ID]` or \n`vs install --add [WORKLOAD_ID]`), the following aliases are available:\n\n|  Alias    | Workload ID |\n|-----------|----------------------------|\n| `mobile`  | Microsoft.VisualStudio.Workload.NetCrossPlat |\n| `xamarin` | Microsoft.VisualStudio.Workload.NetCrossPlat |\n| `maui`    | Microsoft.VisualStudio.Workload.NetCrossPlat |\n| `core`    | Microsoft.NetCore.Component.DevelopmentTools |\n| `azure`   | Microsoft.VisualStudio.Workload.Azure |\n| `data`    | Microsoft.VisualStudio.Workload.Data |\n| `desktop` | Microsoft.VisualStudio.Workload.ManagedDesktop |\n| `unity`   | Microsoft.VisualStudio.Workload.ManagedGame |\n| `native`  | Microsoft.VisualStudio.Workload.NativeDesktop |\n| `web`     | Microsoft.VisualStudio.Workload.NetWeb |\n| `node`    | Microsoft.VisualStudio.Workload.Node |\n| `office`  | Microsoft.VisualStudio.Workload.Office |\n| `py`      | Microsoft.VisualStudio.Workload.Python |\n| `python`  | Microsoft.VisualStudio.Workload.Python |\n| `uwp`     | Microsoft.VisualStudio.Workload.Universal |\n| `vsx`     | Microsoft.VisualStudio.Workload.VisualStudioExtension |\n\nThe aliases are converted to the appropriate switch automatically, such as into \n`-requires [ID]` or `--add [ID]`. Additionally, depending on the command being run, \nthe aliases might use a `+` prefix (like `+mobile`), which might make for a more \nintuitive command line, such as `vs install +mobile -sku:enterprise` or `vs +mobile` \n(runs the VS with the mobile workload installed). The *modify* command uses `+` and `-` \nprefix to add or remove workloads respectively, for example.\n\n\n\u003c!-- include https://github.com/devlooped/sponsors/raw/main/footer.md --\u003e\n# Sponsors \n\n\u003c!-- sponsors.md --\u003e\n[![Clarius Org](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/clarius.png \"Clarius Org\")](https://github.com/clarius)\n[![MFB Technologies, Inc.](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/MFB-Technologies-Inc.png \"MFB Technologies, Inc.\")](https://github.com/MFB-Technologies-Inc)\n[![Torutek](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/torutek-gh.png \"Torutek\")](https://github.com/torutek-gh)\n[![DRIVE.NET, Inc.](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/drivenet.png \"DRIVE.NET, Inc.\")](https://github.com/drivenet)\n[![Keith Pickford](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/Keflon.png \"Keith Pickford\")](https://github.com/Keflon)\n[![Thomas Bolon](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/tbolon.png \"Thomas Bolon\")](https://github.com/tbolon)\n[![Kori Francis](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/kfrancis.png \"Kori Francis\")](https://github.com/kfrancis)\n[![Toni Wenzel](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/twenzel.png \"Toni Wenzel\")](https://github.com/twenzel)\n[![Uno Platform](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/unoplatform.png \"Uno Platform\")](https://github.com/unoplatform)\n[![Dan Siegel](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/dansiegel.png \"Dan Siegel\")](https://github.com/dansiegel)\n[![Reuben Swartz](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/rbnswartz.png \"Reuben Swartz\")](https://github.com/rbnswartz)\n[![Jacob Foshee](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/jfoshee.png \"Jacob Foshee\")](https://github.com/jfoshee)\n[![](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/Mrxx99.png \"\")](https://github.com/Mrxx99)\n[![Eric Johnson](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/eajhnsn1.png \"Eric Johnson\")](https://github.com/eajhnsn1)\n[![Ix Technologies B.V.](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/IxTechnologies.png \"Ix Technologies B.V.\")](https://github.com/IxTechnologies)\n[![David JENNI](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/davidjenni.png \"David JENNI\")](https://github.com/davidjenni)\n[![Jonathan ](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/Jonathan-Hickey.png \"Jonathan \")](https://github.com/Jonathan-Hickey)\n[![Charley Wu](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/akunzai.png \"Charley Wu\")](https://github.com/akunzai)\n[![Ken Bonny](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/KenBonny.png \"Ken Bonny\")](https://github.com/KenBonny)\n[![Simon Cropp](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/SimonCropp.png \"Simon Cropp\")](https://github.com/SimonCropp)\n[![agileworks-eu](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/agileworks-eu.png \"agileworks-eu\")](https://github.com/agileworks-eu)\n[![sorahex](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/sorahex.png \"sorahex\")](https://github.com/sorahex)\n[![Zheyu Shen](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/arsdragonfly.png \"Zheyu Shen\")](https://github.com/arsdragonfly)\n[![Vezel](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/vezel-dev.png \"Vezel\")](https://github.com/vezel-dev)\n[![ChilliCream](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/ChilliCream.png \"ChilliCream\")](https://github.com/ChilliCream)\n[![4OTC](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/4OTC.png \"4OTC\")](https://github.com/4OTC)\n[![Vincent Limo](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/v-limo.png \"Vincent Limo\")](https://github.com/v-limo)\n[![Jordan S. Jones](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/jordansjones.png \"Jordan S. Jones\")](https://github.com/jordansjones)\n[![domischell](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/DominicSchell.png \"domischell\")](https://github.com/DominicSchell)\n\n\n\u003c!-- sponsors.md --\u003e\n\n[![Sponsor this project](https://raw.githubusercontent.com/devlooped/sponsors/main/sponsor.png \"Sponsor this project\")](https://github.com/sponsors/devlooped)\n\u0026nbsp;\n\n[Learn more about GitHub Sponsors](https://github.com/sponsors)\n\n\u003c!-- https://github.com/devlooped/sponsors/raw/main/footer.md --\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevlooped%2Fdotnet-vs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdevlooped%2Fdotnet-vs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevlooped%2Fdotnet-vs/lists"}