Esta acción configura un entorno CLI de .NET para su uso en acciones de:
Nota : Los ejecutores alojados en GitHub tienen algunas versiones del SDK de .NET preinstaladas. Las versiones instaladas están sujetas a cambios. Consulte la documentación: Software instalado en ejecutores alojados en github para las versiones de .NET SDK que están disponibles actualmente.
Ver acción.yml
Básico :
steps :
- uses : actions/checkout@v4
- uses : actions/setup-dotnet@v4
with :
dotnet-version : ' 3.1.x '
- run : dotnet build <my project>
Advertencia : a menos que se especifique una versión concreta en el archivo
global.json
, se utilizará de forma predeterminada la última versión de .NET instalada en el ejecutor (incluidas las versiones preinstaladas) . Consulte la documentación de las versiones de .NET SDK actualmente preinstaladas.
Instalación de múltiples versiones :
steps :
- uses : actions/checkout@v4
- name : Setup dotnet
uses : actions/setup-dotnet@v4
with :
dotnet-version : |
3.1.x
5.0.x
- run : dotnet build <my project>
La entrada dotnet-version
admite la siguiente sintaxis:
3.1
, incluidas las versiones preliminares (preview, rc)..NET 5.0
. Instala la última versión de la versión específica del SDK, incluidas las versiones preliminares (vista previa, rc). dotnet-quality
Esta entrada configura la acción para instalar la última versión de la calidad especificada en el canal. Los valores posibles de dotnet-quality
son: diario , firmado , validado , vista previa , ga .
Nota : la entrada
dotnet-quality
solo se puede utilizar con la versión .NET SDK en formatos 'A.B', 'ABx', 'A', 'Ax' y 'ABCxx' donde la versión principal es superior a 5. En otros casos , se ignorarán las entradasdotnet-quality
.
steps :
- uses : actions/checkout@v4
- uses : actions/setup-dotnet@v4
with :
dotnet-version : ' 6.0.x '
dotnet-quality : ' preview '
- run : dotnet build <my project>
global-json-file
La acción setup-dotnet
puede leer la versión .NET SDK desde un archivo global.json
. La entrada global-json-file
se utiliza para especificar la ruta al global.json
. Si el archivo que se proporcionó a la entrada global-json-file
no existe, la acción fallará con un error.
Nota : En caso de que se utilicen las entradas
dotnet-version
yglobal-json-file
, se instalarán las versiones de ambas entradas.
steps :
- uses : actions/checkout@v4
- uses : actions/setup-dotnet@v4
with :
global-json-file : csharp/global.json
- run : dotnet build <my project>
working-directory : csharp
La acción tiene una funcionalidad incorporada para almacenar en caché y restaurar dependencias. Utiliza un kit de herramientas/caché interno para almacenar en caché los datos de paquetes globales, pero requiere menos ajustes de configuración. La entrada cache
es opcional y el almacenamiento en caché está desactivado de forma predeterminada.
La acción busca archivos NuGet Lock ( packages.lock.json
) en la raíz del repositorio, calcula su hash y lo utiliza como parte de la clave de caché. Si el archivo de bloqueo no existe, esta acción genera un error. Utilice cache-dependency-path
en los casos en los que se utilicen varios archivos de dependencia o estén ubicados en subdirectorios diferentes.
Advertencia : el almacenamiento en caché de paquetes NuGet está disponible desde .NET SDK 2.1.500 y 2.2.100, ya que el archivo de bloqueo de NuGet solo está disponible para NuGet 4.9 y versiones posteriores.
steps :
- uses : actions/checkout@v4
- uses : actions/setup-dotnet@v4
with :
dotnet-version : 6.x
cache : true
- run : dotnet restore --locked-mode
Nota : Esta acción solo restaurará la carpeta de
global-packages
, por lo que probablemente obtendrá el error NU1403 al ejecutardotnet restore
. Para evitar esto, puede utilizar la opciónDisableImplicitNuGetFallbackFolder
.
< PropertyGroup >
< DisableImplicitNuGetFallbackFolder >true</ DisableImplicitNuGetFallbackFolder >
</ PropertyGroup >
Nota : utilice la variable de entorno
NUGET_PACKAGES
si está disponible. Algunos corredores de acción ya tienen bibliotecas enormes. (ej. Xamarin)
env :
NUGET_PACKAGES : ${{ github.workspace }}/.nuget/packages
steps :
- uses : actions/checkout@v4
- uses : actions/setup-dotnet@v4
with :
dotnet-version : 6.x
cache : true
- run : dotnet restore --locked-mode
env :
NUGET_PACKAGES : ${{ github.workspace }}/.nuget/packages
steps :
- uses : actions/checkout@v4
- uses : actions/setup-dotnet@v4
with :
dotnet-version : 6.x
cache : true
cache-dependency-path : subdir/packages.lock.json
- run : dotnet restore --locked-mode
Usando setup-dotnet
es posible usar sintaxis matricial para instalar varias versiones de .NET SDK:
jobs :
build :
runs-on : ubuntu-latest
strategy :
matrix :
dotnet : [ '2.1.x', '3.1.x', '5.0.x' ]
name : Dotnet ${{ matrix.dotnet }} sample
steps :
- uses : actions/checkout@v4
- name : Setup dotnet
uses : actions/setup-dotnet@v4
with :
dotnet-version : ${{ matrix.dotnet }}
- name : Execute dotnet
run : dotnet build <my project>
Nota : a menos que se especifique una versión concreta en el archivo
global.json
, se utilizará de forma predeterminada la última versión de .NET instalada en el ejecutor (incluidas las versiones preinstaladas). Para controlar este comportamiento, es posible que desee utilizar archivos temporalesglobal.json
:
Prueba matricial con creación temporal de global.json
jobs :
build :
runs-on : ubuntu-latest
strategy :
matrix :
dotnet : [ '2.1.x', '3.1.x', '5.0.x' ]
name : Dotnet ${{ matrix.dotnet }} sample
steps :
- uses : actions/checkout@v4
- name : Setup dotnet
uses : actions/setup-dotnet@v4
id : stepid
with :
dotnet-version : ${{ matrix.dotnet }}
- name : Create temporary global.json
run : echo '{"sdk":{"version": "${{ steps.stepid.outputs.dotnet-version }}"}}' > ./global.json
- name : Execute dotnet
run : dotnet build <my project>
steps :
- uses : actions/checkout@v4
- uses : actions/setup-dotnet@v4
with :
dotnet-version : ' 3.1.x '
source-url : https://nuget.pkg.github.com/<owner>/index.json
env :
NUGET_AUTH_TOKEN : ${{secrets.GITHUB_TOKEN}}
- run : dotnet build <my project>
- name : Create the package
run : dotnet pack --configuration Release <my project>
- name : Publish the package to GPR
run : dotnet nuget push <my project>/bin/Release/*.nupkg
- uses : actions/setup-dotnet@v4
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
- name : Publish the package to Azure Artifacts
run : dotnet nuget push <my project>/bin/Release/*.nupkg
- uses : actions/setup-dotnet@v4
with :
dotnet-version : 3.1.x
- name : Publish the package to nuget.org
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 }}
Nota : Es la única forma de enviar un paquete al feed de nuget.org para máquinas macOS/Linux debido a las limitaciones del almacén de configuración de claves API.
dotnet-version
Usando la salida dotnet-version es posible instalar la versión .NET SDK de acción.
Instalación de versión única
En el caso de una instalación de una sola versión, la salida dotnet-version
contiene la versión que instala la acción.
- uses : actions/setup-dotnet@v4
id : stepid
with :
dotnet-version : 3.1.422
- run : echo '${{ steps.stepid.outputs.dotnet-version }}' # outputs 3.1.422
Instalación de múltiples versiones
En el caso de una instalación de varias versiones, la salida dotnet-version
contiene la última versión instalada por la acción.
- uses : actions/setup-dotnet@v4
id : stepid
with :
dotnet-version : |
3.1.422
5.0.408
- run : echo '${{ steps.stepid.outputs.dotnet-version }}' # outputs 5.0.408
Instalación desde global.json
Cuando la entrada dotnet-version
se utiliza junto con la entrada global-json-file
, la salida dotnet-version
contiene la versión resuelta desde global.json
.
- uses : actions/setup-dotnet@v4
id : stepid
with :
dotnet-version : |
3.1.422
5.0.408
global-json-file : " ./global.json " # contains version 2.2.207
- run : echo '${{ steps.stepid.outputs.dotnet-version }}' # outputs 2.2.207
cache-hit
Se encontró un valor booleano para indicar una coincidencia exacta para la clave de caché (sigue acciones/caché)
Algunas variables de entorno pueden ser necesarias para su caso particular o para mejorar el registro. A continuación se enumeran algunos ejemplos, pero la lista completa con detalles completos se puede encontrar aquí: https://docs.microsoft.com/en-us/dotnet/core/tools/dotnet-environment-variables
variable ambiental | Descripción | Valor predeterminado |
---|---|---|
DOTNET_INSTALL_DIR | Especifica un directorio donde la acción debe instalar los SDK de .NET. | valor predeterminado para cada sistema operativo |
DOTNET_NOLOGO | Elimina el logotipo y el mensaje de telemetría de la primera ejecución de dotnet cli | FALSO |
DOTNET_CLI_TELEMETRY_OPTOUT | Optar por no recibir telemetría enviada a Microsoft | FALSO |
DOTNET_MULTILEVEL_LOOKUP | Configura si la ubicación de instalación global se utiliza como alternativa | verdadero |
NUGET_PACKAGES | Configura una ruta a la carpeta de global-packages de NuGet | valor predeterminado para cada sistema operativo |
Los valores predeterminados de las variables de entorno DOTNET_INSTALL_DIR
y NUGET_PACKAGES
dependen del sistema operativo que se utiliza en un ejecutor:
Sistema operativo | DOTNET_INSTALL_DIR | NUGET_PACKAGES |
---|---|---|
ventanas | C:Program Filesdotnet | %userprofile%.nugetpackages |
ubuntu | /usr/share/dotnet | ~/.nuget/packages |
macos | /Users/runner/.dotnet | ~/.nuget/packages |
Ejemplo de uso de variable de entorno :
build :
runs-on : ubuntu-latest
env :
DOTNET_INSTALL_DIR : " path/to/directory "
NUGET_PACKAGES : ${{ github.workspace }}/.nuget/packages
steps :
- uses : actions/checkout@main
- uses : actions/setup-dotnet@v4
with :
dotnet-version : ' 3.1.x '
cache : true
Los scripts y la documentación de este proyecto se publican bajo la licencia MIT.
¡Las contribuciones son bienvenidas! Ver la Guía del Colaborador