Diese Aktion richtet eine .NET-CLI-Umgebung für die Verwendung in Aktionen ein:
Hinweis : Auf von GitHub gehosteten Läufern sind einige Versionen des .NET SDK vorinstalliert. Installierte Versionen können sich ändern. Informationen zu den derzeit verfügbaren .NET SDK-Versionen finden Sie in der Dokumentation: Auf von Github gehosteten Läufern installierte Software.
Siehe action.yml
Grundlegend :
steps :
- uses : actions/checkout@v4
- uses : actions/setup-dotnet@v4
with :
dotnet-version : ' 3.1.x '
- run : dotnet build <my project>
Warnung : Sofern in der Datei
global.json
keine konkrete Version angegeben ist, wird standardmäßig die neueste auf dem Runner installierte .NET-Version (einschließlich vorinstallierter Versionen) verwendet . Bitte beachten Sie die Dokumentation zu den aktuell vorinstallierten .NET SDK-Versionen.
Installation mehrerer Versionen :
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>
Die Eingabe dotnet-version
unterstützt die folgende Syntax:
3.1
, einschließlich Vorabversionen (Preview, RC)..NET 5.0
Release. Installiert die neueste Version der jeweiligen SDK-Version, einschließlich Vorabversionen (Preview, RC). dotnet-quality
Diese Eingabe richtet die Aktion ein, um den neuesten Build der angegebenen Qualität im Kanal zu installieren. Die möglichen Werte für dotnet-quality
sind: daily , signiert , validiert , Vorschau , ga .
Hinweis : Eingaben
dotnet-quality
können nur mit der .NET SDK-Version in den Formaten „A.B“, „ABx“, „A“, „Ax“ und „ABCxx“ verwendet werden, wenn die Hauptversion höher als 5 ist. In anderen Fällen , Eingabendotnet-quality
werden ignoriert.
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
Die Aktion setup-dotnet
kann die .NET SDK-Version aus einer global.json
-Datei lesen. Die Eingabe global-json-file
wird zum Angeben des Pfads zur global.json
verwendet. Wenn die Datei, die für die Eingabe global-json-file
bereitgestellt wurde, nicht vorhanden ist, schlägt die Aktion mit einer Fehlermeldung fehl.
Hinweis : Falls sowohl
dotnet-version
als auchglobal-json-file
Eingaben verwendet werden, werden Versionen von beiden Eingaben installiert.
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
Die Aktion verfügt über eine integrierte Funktionalität zum Zwischenspeichern und Wiederherstellen von Abhängigkeiten. Es verwendet Toolkit/Cache unter der Haube zum Zwischenspeichern globaler Paketdaten, erfordert jedoch weniger Konfigurationseinstellungen. Die cache
Eingabe ist optional und das Caching ist standardmäßig deaktiviert.
Die Aktion sucht im Repository-Stammverzeichnis nach NuGet Lock-Dateien ( packages.lock.json
), berechnet deren Hash und verwendet ihn als Teil des Cache-Schlüssels. Wenn die Sperrdatei nicht vorhanden ist, löst diese Aktion einen Fehler aus. Verwenden Sie cache-dependency-path
für Fälle, in denen mehrere Abhängigkeitsdateien verwendet werden oder sich diese in verschiedenen Unterverzeichnissen befinden.
Warnung : Das Zwischenspeichern von NuGet-Paketen ist seit .NET SDK 2.1.500 und 2.2.100 verfügbar, da die NuGet-Sperrdatei nur für NuGet 4.9 und höher verfügbar ist.
steps :
- uses : actions/checkout@v4
- uses : actions/setup-dotnet@v4
with :
dotnet-version : 6.x
cache : true
- run : dotnet restore --locked-mode
Hinweis : Mit dieser Aktion wird nur der Ordner
global-packages
wiederhergestellt, daher erhalten Sie wahrscheinlich den Fehler NU1403, wenn Siedotnet restore
ausführen. Um dies zu vermeiden, können Sie die OptionDisableImplicitNuGetFallbackFolder
verwenden.
< PropertyGroup >
< DisableImplicitNuGetFallbackFolder >true</ DisableImplicitNuGetFallbackFolder >
</ PropertyGroup >
Hinweis : Verwenden Sie die Umgebungsvariable
NUGET_PACKAGES
, falls verfügbar. Einige Action-Runner verfügen bereits über riesige Bibliotheken. (z. B. 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
Mit setup-dotnet
ist es möglich, mithilfe der Matrixsyntax mehrere Versionen des .NET SDK zu installieren:
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>
Hinweis : Sofern in der Datei
global.json
keine konkrete Version angegeben ist, wird standardmäßig die neueste auf dem Runner installierte .NET-Version (einschließlich vorinstallierter Versionen) verwendet. Um dieses Verhalten zu steuern, können Sie temporäreglobal.json
-Dateien verwenden:
Matrixtests mit temporärer global.json-Erstellung
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 }}
Hinweis : Aufgrund der Einschränkungen des API-Schlüsselkonfigurationsspeichers ist dies die einzige Möglichkeit, ein Paket an den nuget.org-Feed für macOS-/Linux-Computer zu übertragen.
dotnet-version
Mithilfe der dotnet-version -Ausgabe ist es möglich, die von der Aktion installierte .NET SDK-Version abzurufen.
Einzelversionsinstallation
Im Falle einer Einzelversionsinstallation enthält die Ausgabe dotnet-version
die Version, die durch die Aktion installiert wird.
- uses : actions/setup-dotnet@v4
id : stepid
with :
dotnet-version : 3.1.422
- run : echo '${{ steps.stepid.outputs.dotnet-version }}' # outputs 3.1.422
Installation mehrerer Versionen
Im Falle einer Installation mit mehreren Versionen enthält die Ausgabe dotnet-version
die neueste Version, die durch die Aktion installiert wird.
- 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
Installation von global.json
Wenn die dotnet-version
Eingabe zusammen mit der global-json-file
Eingabe verwendet wird, enthält die dotnet-version
Ausgabe die aus global.json
aufgelöste Version.
- 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
Ein boolescher Wert, der angibt, dass eine genaue Übereinstimmung für den Cache-Schlüssel gefunden wurde (folgt Aktionen/Cache)
Einige Umgebungsvariablen können für Ihren speziellen Fall oder zur Verbesserung der Protokollierung erforderlich sein. Einige Beispiele sind unten aufgeführt, aber die vollständige Liste mit vollständigen Details finden Sie hier: https://docs.microsoft.com/en-us/dotnet/core/tools/dotnet-environment-variables
Umgebungsvariable | Beschreibung | Standardwert |
---|---|---|
DOTNET_INSTALL_DIR | Gibt ein Verzeichnis an, in dem .NET SDKs durch die Aktion installiert werden sollen. | Standardwert für jedes Betriebssystem |
DOTNET_NOLOGO | Entfernt Logo und Telemetriemeldung aus der ersten Ausführung von Dotnet CLI | FALSCH |
DOTNET_CLI_TELEMETRY_OPTOUT | Deaktivieren Sie die Übermittlung von Telemetriedaten an Microsoft | FALSCH |
DOTNET_MULTILEVEL_LOOKUP | Konfiguriert, ob der globale Installationsort als Fallback verwendet wird | WAHR |
NUGET_PACKAGES | Konfiguriert einen Pfad zum NuGet-Ordner global-packages | Standardwert für jedes Betriebssystem |
Die Standardwerte der Umgebungsvariablen DOTNET_INSTALL_DIR
und NUGET_PACKAGES
hängen vom Betriebssystem ab, das auf einem Runner verwendet wird:
Betriebssystem | DOTNET_INSTALL_DIR | NUGET_PACKAGES |
---|---|---|
Windows | C:Program Filesdotnet | %userprofile%.nugetpackages |
Ubuntu | /usr/share/dotnet | ~/.nuget/packages |
macOS | /Users/runner/.dotnet | ~/.nuget/packages |
Beispiel für die Verwendung einer Umgebungsvariablen :
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
Die Skripte und Dokumentation in diesem Projekt werden unter der MIT-Lizenz veröffentlicht
Beiträge sind willkommen! Siehe Leitfaden für Mitwirkende