2019-07-17 10:45:43 -04:00
# setup-dotnet
2019-06-19 16:22:22 -04:00
2022-04-01 16:48:47 +03:00
[](https://github.com/actions/setup-dotnet)
2019-08-12 15:11:11 -04:00
2021-10-05 10:05:48 -05:00
This action sets up a [.NET CLI ](https://github.com/dotnet/sdk ) environment for use in actions by:
2019-06-19 16:22:22 -04:00
2021-11-23 05:03:56 -05:00
- optionally downloading and caching a version(s) of dotnet by SDK version(s) and adding to PATH
2019-07-17 10:45:43 -04:00
- registering problem matchers for error output
2019-12-13 12:52:24 -08:00
- setting up authentication to private package sources like GitHub Packages
2019-07-17 10:45:43 -04:00
2020-06-29 22:03:16 +10: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 21:35:43 +09: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 22:03:16 +10:00
for .NET SDK versions that are currently available.
2019-07-17 10:45:43 -04:00
# Usage
See [action.yml ](action.yml )
Basic:
``` yaml
2019-07-25 21:27:45 -04:00
steps :
2022-04-01 16:48:47 +03:00
- uses : actions/checkout@v3
- uses : actions/setup-dotnet@v2
2019-07-17 10:45:43 -04:00
with :
2020-04-04 19:47:16 +02:00
dotnet-version : '3.1.x' # SDK Version to use; x will use the latest version of the 3.1 channel
2019-07-17 10:45:43 -04:00
- run : dotnet build <my project>
```
2021-11-23 05:03:56 -05:00
Multiple versions:
> Note: In case multiple versions are installed, the latest .NET version will be used by default unless another version is specified in the `global.json` file.
2019-07-17 10:45:43 -04:00
2021-11-23 05:03:56 -05:00
``` yml
steps :
2022-04-01 16:48:47 +03:00
- uses : actions/checkout@v3
2021-12-28 13:37:44 +01:00
- name : Setup dotnet
2022-04-01 16:48:47 +03:00
uses : actions/setup-dotnet@v2
2021-11-23 05:03:56 -05:00
with :
dotnet-version : |
3.1 .x
5.0 .x
- run : dotnet build <my project>
```
2021-05-05 16:45:32 +03:00
Preview version:
``` yml
steps :
2022-04-01 16:48:47 +03:00
- uses : actions/checkout@v3
- uses : actions/setup-dotnet@v2
2021-05-05 16:45:32 +03:00
with :
dotnet-version : '6.0.x'
include-prerelease : true
- run : dotnet build <my project>
```
2022-04-18 08:25:56 -04:00
global.json in a subdirectory:
``` yml
steps :
- uses : actions/checkout@v3
- uses : actions/setup-dotnet@v2
with :
global-json-file : csharp/global.json
- run : dotnet build <my project>
working-directory : csharp
```
2021-05-05 16:45:32 +03:00
2019-07-17 10:45:43 -04:00
Matrix Testing:
``` yaml
jobs :
build :
2020-09-17 12:49:59 -07:00
runs-on : ubuntu-latest
2019-07-17 10:45:43 -04:00
strategy :
matrix :
2021-03-25 20:07:28 -03:00
dotnet : [ '2.1.x' , '3.1.x' , '5.0.x' ]
2019-07-17 10:45:43 -04:00
name : Dotnet ${{ matrix.dotnet }} sample
2019-07-25 21:27:45 -04:00
steps :
2022-04-01 16:48:47 +03:00
- uses : actions/checkout@v3
2019-07-17 10:45:43 -04:00
- name : Setup dotnet
2022-04-01 16:48:47 +03:00
uses : actions/setup-dotnet@v2
2019-07-17 10:45:43 -04:00
with :
2019-08-13 16:05:52 -04:00
dotnet-version : ${{ matrix.dotnet }}
2019-07-17 10:45:43 -04:00
- run : dotnet build <my project>
```
2019-06-19 16:22:22 -04:00
2020-09-17 12:49:59 -07:00
Side by Side Testing:
``` yaml
jobs :
build :
runs-on : ubuntu-latest
name : Dotnet Side by Side testing sample
steps :
2022-04-01 16:48:47 +03:00
- uses : actions/checkout@v3
2020-09-17 12:49:59 -07:00
- name : Setup dotnet
2022-04-01 16:48:47 +03:00
uses : actions/setup-dotnet@v2
2020-09-17 12:49:59 -07:00
with :
2022-04-11 17:50:34 +02:00
dotnet-version : |
2.1.x
3.1.x
2020-09-17 12:49:59 -07:00
- run : dotnet build <my project>
- run : dotnet test <my project>
```
2019-11-25 15:16:52 -08:00
Authentication for nuget feeds:
2019-09-09 10:27:23 -07:00
``` yaml
steps :
2022-04-01 16:48:47 +03:00
- uses : actions/checkout@v3
2019-11-25 15:16:52 -08:00
# Authenticates packages to push to GPR
2022-04-01 16:48:47 +03:00
- uses : actions/setup-dotnet@v2
2019-09-09 10:27:23 -07:00
with :
2020-04-04 19:47:16 +02:00
dotnet-version : '3.1.x' # SDK Version to use.
2019-11-25 15:16:52 -08:00
source-url : https://nuget.pkg.github.com/<owner>/index.json
2019-09-09 10:27:23 -07: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 02:55:59 +07:00
- name : Publish the package to GPR
2019-09-09 10:27:23 -07:00
run : dotnet nuget push <my project>/bin/Release/*.nupkg
2021-05-06 20:10:13 +07:00
# Authenticates packages to push to Azure Artifacts
2022-04-01 16:48:47 +03:00
- uses : actions/setup-dotnet@v2
2019-10-03 18:00:43 -07:00
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-25 15:16:52 -08:00
- name : Publish the package to Azure Artifacts
2019-10-03 18:00:43 -07:00
run : dotnet nuget push <my project>/bin/Release/*.nupkg
2021-05-06 02:55:59 +07:00
2021-05-06 20:10:13 +07:00
# Authenticates packages to push to nuget.org.
2021-05-06 21:38:47 +07: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.
2022-04-01 16:48:47 +03:00
- uses : actions/setup-dotnet@v2
2021-05-06 02:55:59 +07:00
with :
dotnet-version : 3.1 .x
2021-05-06 15:10:43 +07:00
- name : Publish the package to nuget.org
2021-05-06 02:55:59 +07: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-03 18:00:43 -07:00
```
2020-05-29 13:39:14 -07:00
## Environment Variables to use with dotnet
2021-07-28 14:48:24 +04: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-29 13:39:14 -07: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-15 18:12:04 +02:00
``` yaml
2020-06-01 08:53:23 -07:00
build :
runs-on : ubuntu-latest
2020-05-29 13:39:14 -07:00
env :
DOTNET_NOLOGO : true
2020-06-01 08:53:23 -07:00
steps :
2020-07-15 10:00:26 -07:00
- uses : actions/checkout@main
2022-04-01 16:48:47 +03:00
- uses : actions/setup-dotnet@v2
2020-06-01 08:53:23 -07:00
with :
2021-03-25 20:07:28 -03:00
dotnet-version : '3.1.x' # SDK Version to use.
2020-05-29 13:39:14 -07:00
```
2019-06-19 16:22:22 -04: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 )