このアクションは、次のアクションで使用する .NET CLI 環境をセットアップします。
注: GitHub でホストされているランナーには、いくつかのバージョンの .NET SDK がプリインストールされています。インストールされているバージョンは変更される可能性があります。現在利用可能な .NET SDK バージョンの github でホストされているランナーにインストールされているソフトウェアのドキュメントを参照してください。
action.yml を参照してください。
基本:
steps :
- uses : actions/checkout@v4
- uses : actions/setup-dotnet@v4
with :
dotnet-version : ' 3.1.x '
- run : dotnet build <my project>
警告:
global.json
ファイルで具体的なバージョンが指定されていない限り、ランナーにインストールされている最新の .NET バージョン (プリインストールされたバージョンを含む) がデフォルトで使用されます。現在プレインストールされている .NET SDK バージョンのドキュメントを参照してください。
複数バージョンのインストール:
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>
dotnet-version
入力は、次の構文をサポートします。
3.1
にインストールします。.NET 5.0
リリース以降で利用可能です。プレリリース バージョン (プレビュー、RC) を含む、特定の SDK リリースの最新バージョンをインストールします。 dotnet-quality
入力の使用この入力は、指定された品質の最新ビルドをチャネルにインストールするアクションを設定します。 dotnet-quality
に指定できる値は、 daily 、 signed 、 validated 、 review 、 gaです。
注:
dotnet-quality
入力は、メジャー バージョンが 5 より高い、「A.B」、「ABx」、「A」、「Ax」、および「ABCxx」形式の .NET SDK バージョンでのみ使用できます。その他の場合、dotnet-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
入力の使用setup-dotnet
アクションは、 global.json
ファイルから .NET SDK バージョンを読み取ることができます。入力global-json-file
global.json
へのパスを指定するために使用されます。 global-json-file
入力に指定されたファイルが存在しない場合、アクションはエラーで失敗します。
注:
dotnet-version
とglobal-json-file
入力の両方が使用される場合、両方の入力からのバージョンがインストールされます。
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
このアクションには、依存関係をキャッシュおよび復元するための機能が組み込まれています。グローバル パッケージ データをキャッシュするために内部でツールキット/キャッシュを使用しますが、必要な構成設定は少なくなります。 cache
入力はオプションであり、キャッシュはデフォルトではオフになっています。
このアクションは、リポジトリ ルートで NuGet Lock ファイル ( packages.lock.json
) を検索し、そのハッシュを計算して、それをキャッシュ キーの一部として使用します。ロック ファイルが存在しない場合、このアクションはエラーをスローします。複数の依存関係ファイルが使用されている場合、または依存関係ファイルが異なるサブディレクトリに配置されている場合は、 cache-dependency-path
を使用します。
警告: NuGet ロック ファイルは NuGet 4.9 以降でのみ使用できるため、NuGet パッケージのキャッシュは .NET SDK 2.1.500 および 2.2.100 以降で使用できます。
steps :
- uses : actions/checkout@v4
- uses : actions/setup-dotnet@v4
with :
dotnet-version : 6.x
cache : true
- run : dotnet restore --locked-mode
注: この操作では
global-packages
フォルダーのみが復元されるため、dotnet restore
実行時に NU1403 エラーが発生する可能性があります。これを回避するには、DisableImplicitNuGetFallbackFolder
オプションを使用します。
< PropertyGroup >
< DisableImplicitNuGetFallbackFolder >true</ DisableImplicitNuGetFallbackFolder >
</ PropertyGroup >
注: 利用可能な場合は、
NUGET_PACKAGES
環境変数を使用します。アクション ランナーの中には、すでに巨大なライブラリを備えているものもあります。 (例: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
setup-dotnet
を使用すると、マトリックス構文を使用して .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>
注:
global.json
ファイルで具体的なバージョンが指定されていない限り、ランナーにインストールされている最新の .NET バージョン (プリインストールされたバージョンを含む) がデフォルトで使用されます。この動作を制御するには、一時global.json
ファイルを使用することをお勧めします。
一時的な 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 }}
注: API キー構成ストアの制限により、これが macOS/Linux マシンの nuget.org フィードにパッケージをプッシュする唯一の方法です。
dotnet-version
dotnet-version の出力を使用すると、アクションによってインストールされた .NET SDK のバージョンを取得できます。
単一バージョンのインストール
単一バージョンのインストールの場合、 dotnet-version
出力には、アクションによってインストールされたバージョンが含まれます。
- uses : actions/setup-dotnet@v4
id : stepid
with :
dotnet-version : 3.1.422
- run : echo '${{ steps.stepid.outputs.dotnet-version }}' # outputs 3.1.422
複数バージョンのインストール
複数バージョンのインストールの場合、 dotnet-version
出力には、アクションによってインストールされる最新バージョンが含まれます。
- 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
global.json からのインストール
dotnet-version
入力がglobal-json-file
入力とともに使用される場合、 dotnet-version
出力には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
キャッシュ キーに完全一致が見つかったことを示すブール値 (アクション/キャッシュに続きます)
特定のケースやログ記録を改善するために、いくつかの環境変数が必要になる場合があります。いくつかの例を以下に示しますが、完全な詳細を含む完全なリストはここで見つけることができます: https://docs.microsoft.com/en-us/dotnet/core/tools/dotnet-environment-variables
環境変数 | 説明 | デフォルト値 |
---|---|---|
DOTNET_INSTALL_DIR | アクションによって .NET SDK をインストールするディレクトリを指定します。 | 各OSのデフォルト値 |
ドットネット_ノロゴ | dotnet cli の最初の実行からロゴとテレメトリ メッセージを削除します | 間違い |
DOTNET_CLI_TELEMETRY_OPTOUT | Microsoft に送信されるテレメトリのオプトアウト | 間違い |
DOTNET_MULTILEVEL_LOOKUP | グローバルなインストール場所をフォールバックとして使用するかどうかを構成します | 真実 |
NUGET_PACKAGES | NuGet global-packages フォルダーへのパスを構成します。 | 各OSのデフォルト値 |
DOTNET_INSTALL_DIR
およびNUGET_PACKAGES
環境変数のデフォルト値は、ランナーで使用されるオペレーティング システムによって異なります。
オペレーションシステム | DOTNET_INSTALL_DIR | NUGET_PACKAGES |
---|---|---|
窓 | C:Program Filesdotnet | %userprofile%.nugetpackages |
Ubuntu | /usr/share/dotnet | ~/.nuget/packages |
macOS | /Users/runner/.dotnet | ~/.nuget/packages |
環境変数の使用例:
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
このプロジェクトのスクリプトとドキュメントは、MIT ライセンスに基づいてリリースされています。
貢献は大歓迎です!寄稿者向けガイドを参照