dotnet / dotnet/sdk

Add `dnx` command to dotnetup for standalone tool execution

Open
#52,814 4 comments 0 reactions 0 assignees View on GitHub
Area-dotnetup Area-Tools
Dominant language
C#
Stars
3.2k
Forks
1.3k
PR merge metrics
PR metrics pending

Description

## Summary

Add a `dnx` command to `dotnetup` that enables running standalone .NET tools without requiring the full SDK. This provides a managed alternative to the standalone `dnx` script with additional benefits like auto-updates and signed binary acquisition.

## Background

We've previously discussed adding `dnx` (or similar functionality) even before `dotnetup` existed, primarily driven by the rise of AI-powered tools that we want to make more accessible to users. The standalone `dnx` script already exists as a single-file solution, but integrating it into `dotnetup` provides several advantages that a simple script cannot offer.

## Motivation

- **AI Tool Accessibility**: AI-powered developer tools are becoming increasingly common. Users should be able to run these tools easily without needing a full SDK installation.
- **Managed Updates**: Unlike a standalone script, `dotnetup` can automatically update `dnx` when new versions are available.
- **Signed Binaries**: We can ensure users always get a signed, verified version of `dnx` through `dotnetup`'s acquisition pipeline.
- **PATH Management**: `dotnetup` already handles PATH setup for other components; extending this to `dnx` provides a consistent experience.
- **No SDK Required**: Users can run .NET tools in environments where installing the full SDK isn't practical or desired.

## Proposed Functionality

### Commands

```bash
# use dnx (comes pre-bundled (?))
dotnetup dnx
# Run a tool via dnx (after installation)
dnx [args...]
```

Wondering if we need a muxer for any of this. (nuget.client apis are not aot'd for example.)

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.