MCPcopy Index your code
hub / github.com/NuGet/setup-nuget

github.com/NuGet/setup-nuget @v4.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release v4.0 ↗ · + Follow
15 symbols 44 edges 9 files 0 documented · 0%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Setup NuGet.exe

This action downloads and installs a given version of NuGet.exe. Using this action will add nuget to your $PATH on all operating systems, including macOS and linux, without having to prefix it with mono.

NuGet functionality also gets delivered with Visual Studio, msbuild and dotnet SDK. You should consider using the official setup-dotnet or one of the msbuild actions.

Usage

See action.yml

Supported values for nuget-version:

  • latest -- the latest blessed NuGet release.
  • preview -- the latest EarlyAccessPreview release.
  • X.Y.Z -- concrete semver version for a release (e.g. 5.3.1).
  • semver range -- any valid semver range specifier (e.g. 5, >=5, 5.3.x, etc)

This action also supports configuring your NuGet API key using GitHub secrets. The API key should be passed in as an nuget-api-key input. See the GitHub documentation on secrets for how to configure secrets on your repository.

Basic:

steps:
- uses: actions/checkout@master
- uses: nuget/setup-nuget@v3
  with:
    nuget-api-key: ${{ secrets.NuGetAPIKey }}
    nuget-version: '5.x'
- run: nuget restore MyProject.sln

Matrix Testing:

name: NuGet Restore
on: [push, pull_request]
jobs:
  build:
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [windows-latest, ubuntu-latest, macOS-latest]
        nuget: [latest, preview, 4.x, 5.3.1]
    name: NuGet@${{ matrix.nuget }} sample
    steps:
      - uses: actions/checkout@master
      - name: Setup NuGet.exe
        uses: nuget/setup-nuget@v3
        with:
          nuget-version: ${{ matrix.nuget }}
      - run: nuget restore MyProject.sln

Caching

The downloaded nuget.exe files are automatically cached between runs. To cache your global nuget directory, consider using the official cache action.

Caching Example

Note: For this example, you'll need to enable repeatable builds for your project.

steps:
- uses: actions/checkout@master
- uses: nuget/setup-nuget@v3
  with:
    nuget-version: '5.x'
- uses: actions/cache@v4
  id: cache
  with:
    path: ~/.nuget/packages
    key: ${{ runner.os }}-nuget-${{ hashFiles('**/packages.lock.json') }}
- name: NuGet Restore
  if: steps.cache.outputs.cache-hit != 'true'
  run: nuget restore MyProject.sln

Contributing

Code in Main

Install the dependencies

$ npm install

Build the typescript and package it for distribution

$ npm run build && npm run package

Run the tests :heavy_check_mark:

$ npm test

 PASS  ./index.test.js
  ✓ throws invalid number (3ms)
  ✓ wait 500 ms (504ms)
  ✓ test runs (95ms)

...

Publish to a distribution branch

Actions are run from GitHub repos so we will checkin the packed dist folder.

Then run ncc and push the results:

$ npm run package
$ git add dist
$ git commit -a -m "prod dependencies"
$ git push origin releases/v1

Note: We recommend using the --license option for ncc, which will create a license file for all of the production node modules used in your project.

Your action is now published! :rocket:

See the versioning documentation

License

The scripts and documentation in this project are released under the MIT License.

Extension points exported contracts — how you extend this code

Tool (Interface)
(no doc)
src/pick-version.ts
NuGetTools (Interface)
(no doc)
src/pick-version.ts

Core symbols most depended-on inside this repo

pickVersion
called by 7
lib/pick-version.js
fetchVersions
called by 1
lib/pick-version.js
getNuGetToolsJsonWithRetries
called by 1
lib/pick-version.js
getNuGetToolsJson
called by 1
lib/pick-version.js
run
called by 1
lib/main.js
pickVersion
called by 1
src/pick-version.ts
fetchVersions
called by 1
src/pick-version.ts
getNuGetToolsJsonWithRetries
called by 1
src/pick-version.ts

Shape

Function 12
Interface 2
Enum 1

Languages

TypeScript100%

Modules by API surface

src/pick-version.ts7 symbols
lib/pick-version.js4 symbols
src/main.ts1 symbols
src/installer.ts1 symbols
lib/main.js1 symbols
lib/installer.js1 symbols

For agents

$ claude mcp add setup-nuget \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact