2019-07-17 22:45:43 +08:00
# setup-dotnet
2019-06-20 04:22:22 +08:00
2019-08-13 03:11:11 +08:00
< p align = "left" >
< a href = "https://github.com/actions/setup-dotnet" > < img alt = "GitHub Actions status" src = "https://github.com/actions/setup-dotnet/workflows/Main%20workflow/badge.svg" > < / a >
< / p >
2021-10-05 23:05:48 +08:00
This action sets up a [.NET CLI ](https://github.com/dotnet/sdk ) environment for use in actions by:
2019-06-20 04:22:22 +08:00
2019-08-02 04:40:13 +08:00
- optionally downloading and caching a version of dotnet by SDK version and adding to PATH
2019-07-17 22:45:43 +08:00
- registering problem matchers for error output
2019-12-14 04:52:24 +08:00
- setting up authentication to private package sources like GitHub Packages
2019-07-17 22:45:43 +08:00
2020-06-29 20:03:16 +08:00
Please Note: GitHub hosted runners have some versions of the .NET SDK
preinstalled. Installed versions are subject to change. Please refer to the
documentation
2021-04-05 20:35:43 +08:00
[software installed on github hosted runners ](https://docs.github.com/en/actions/using-github-hosted-runners/about-github-hosted-runners#supported-software )
2020-06-29 20:03:16 +08:00
for .NET SDK versions that are currently available.
2019-07-17 22:45:43 +08:00
# Usage
See [action.yml ](action.yml )
Basic:
```yaml
2019-07-26 09:27:45 +08:00
steps:
2021-05-05 21:45:32 +08:00
- uses: actions/checkout@v2
2019-08-01 21:26:34 +08:00
- uses: actions/setup-dotnet@v1
2019-07-17 22:45:43 +08:00
with:
2020-04-05 01:47:16 +08:00
dotnet-version: '3.1.x' # SDK Version to use; x will use the latest version of the 3.1 channel
2019-07-17 22:45:43 +08:00
- run: dotnet build < my project >
```
2021-05-05 21:45:32 +08:00
Preview version:
```yml
steps:
2021-08-29 20:56:20 +08:00
- uses: actions/checkout@v2
2021-05-05 21:47:58 +08:00
- uses: actions/setup-dotnet@v1
2021-05-05 21:45:32 +08:00
with:
dotnet-version: '6.0.x'
include-prerelease: true
- run: dotnet build < my project >
```
2019-07-17 22:45:43 +08:00
Matrix Testing:
```yaml
jobs:
build:
2020-09-18 03:49:59 +08:00
runs-on: ubuntu-latest
2019-07-17 22:45:43 +08:00
strategy:
matrix:
2021-03-26 07:07:28 +08:00
dotnet: [ '2.1.x', '3.1.x', '5.0.x' ]
2019-07-17 22:45:43 +08:00
name: Dotnet ${{ matrix.dotnet }} sample
2019-07-26 09:27:45 +08:00
steps:
2020-08-04 07:19:34 +08:00
- uses: actions/checkout@v2
2019-07-17 22:45:43 +08:00
- name: Setup dotnet
2019-08-01 21:26:34 +08:00
uses: actions/setup-dotnet@v1
2019-07-17 22:45:43 +08:00
with:
2019-08-14 04:05:52 +08:00
dotnet-version: ${{ matrix.dotnet }}
2019-07-17 22:45:43 +08:00
- run: dotnet build < my project >
```
2019-06-20 04:22:22 +08:00
2020-09-18 03:49:59 +08:00
Side by Side Testing:
```yaml
jobs:
build:
runs-on: ubuntu-latest
name: Dotnet Side by Side testing sample
steps:
- uses: actions/checkout@v2
- name: Setup dotnet
uses: actions/setup-dotnet@v1
with:
2021-03-26 07:07:28 +08:00
dotnet-version: '2.1.x'
2020-09-18 03:49:59 +08:00
- name: Setup dotnet
uses: actions/setup-dotnet@v1
with:
dotnet-version: '3.1.x'
- run: dotnet build < my project >
- run: dotnet test < my project >
```
2019-11-26 07:16:52 +08:00
Authentication for nuget feeds:
2019-09-10 01:27:23 +08:00
```yaml
steps:
2020-08-04 07:19:34 +08:00
- uses: actions/checkout@v2
2019-11-26 07:16:52 +08:00
# Authenticates packages to push to GPR
2019-09-10 01:27:23 +08:00
- uses: actions/setup-dotnet@v1
with:
2020-04-05 01:47:16 +08:00
dotnet-version: '3.1.x' # SDK Version to use.
2019-11-26 07:16:52 +08:00
source-url: https://nuget.pkg.github.com/< owner > /index.json
2019-09-10 01:27:23 +08:00
env:
NUGET_AUTH_TOKEN: ${{secrets.GITHUB_TOKEN}}
- run: dotnet build < my project >
- name: Create the package
run: dotnet pack --configuration Release < my project >
2021-05-06 03:55:59 +08:00
- name: Publish the package to GPR
2019-09-10 01:27:23 +08:00
run: dotnet nuget push < my project > /bin/Release/*.nupkg
2021-05-06 21:10:13 +08:00
# Authenticates packages to push to Azure Artifacts
2019-10-04 09:00:43 +08:00
- uses: actions/setup-dotnet@v1
with:
source-url: https://pkgs.dev.azure.com/< your-organization > /_packaging/< your-feed-name > /nuget/v3/index.json
env:
NUGET_AUTH_TOKEN: ${{secrets.AZURE_DEVOPS_PAT}} # Note, create a secret with this name in Settings
2019-11-26 07:16:52 +08:00
- name: Publish the package to Azure Artifacts
2019-10-04 09:00:43 +08:00
run: dotnet nuget push < my project > /bin/Release/*.nupkg
2021-05-06 03:55:59 +08:00
2021-05-06 21:10:13 +08:00
# Authenticates packages to push to nuget.org.
2021-05-06 22:38:47 +08:00
# It's only the way to push a package to nuget.org feed for macOS/Linux machines due to API key config store limitations.
2021-05-06 03:55:59 +08:00
- uses: actions/setup-dotnet@v1
with:
dotnet-version: 3.1.x
2021-05-06 16:10:43 +08:00
- name: Publish the package to nuget.org
2021-05-06 03:55:59 +08:00
run: dotnet nuget push */bin/Release/* .nupkg -k $NUGET_AUTH_TOKEN -s https://api.nuget.org/v3/index.json
env:
NUGET_AUTH_TOKEN: ${{ secrets.NUGET_TOKEN }}
2019-10-04 09:00:43 +08:00
```
2020-05-30 04:39:14 +08:00
## Environment Variables to use with dotnet
2021-07-28 18:48:24 +08:00
Some environment variables may be necessary for your particular case or to improve logging. Some examples are listed below, but the full list with complete details can be found here: https://docs.microsoft.com/en-us/dotnet/core/tools/dotnet-environment-variables
2020-05-30 04:39:14 +08:00
- DOTNET_NOLOGO - removes logo and telemetry message from first run of dotnet cli (default: false)
- DOTNET_CLI_TELEMETRY_OPTOUT - opt-out of telemetry being sent to Microsoft (default: false)
- DOTNET_MULTILEVEL_LOOKUP - configures whether the global install location is used as a fall-back (default: true)
Example usage:
2020-08-16 00:12:04 +08:00
```yaml
2020-06-01 23:53:23 +08:00
build:
runs-on: ubuntu-latest
2020-05-30 04:39:14 +08:00
env:
DOTNET_NOLOGO: true
2020-06-01 23:53:23 +08:00
steps:
2020-07-16 01:00:26 +08:00
- uses: actions/checkout@main
2020-06-01 23:53:23 +08:00
- uses: actions/setup-dotnet@v1
with:
2021-03-26 07:07:28 +08:00
dotnet-version: '3.1.x' # SDK Version to use.
2020-05-30 04:39:14 +08:00
```
2019-06-20 04:22:22 +08:00
# License
The scripts and documentation in this project are released under the [MIT License ](LICENSE )
# Contributions
Contributions are welcome! See [Contributor's Guide ](docs/contributors.md )