此操作透過以下方式設定 .NET CLI 環境以供在操作中使用:
注意:GitHub 託管的運行程式預先安裝了某些版本的 .NET SDK。安裝的版本可能會變更。請參閱文件:在 github 託管執行器上安裝的軟體,以了解目前可用的 .NET SDK 版本。
參見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 SDK 的最新修補版本,包括預發布版本(預覽版、RC).NET 5.0
版本起可用。安裝特定 SDK 版本的最新版本,包括預發行版本(預覽版、rc)。 dotnet-quality
輸入此輸入設定在頻道中安裝指定品質的最新版本的操作。 dotnet-quality
的可能值有: daily 、 signed 、 validated 、 preview 、 ga 。
注意:
dotnet-quality
dotnet-quality
輸入只能與主版本高於 5 的“A.B”、“ABx”、“A”、“Ax”和“ABCxx”格式的 .NET SDK 版本一起使用。將被忽略。
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 套件自 .NET SDK 2.1.500 和 2.2.100 起可用,因為 NuGet 鎖定檔案僅適用於 NuGet 4.9 及更高版本。
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 feed 的唯一方法。
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 的目錄。 | 每個作業系統的預設值 |
DOTNET_NOLOGO | 從首次執行的 dotnet cli 中刪除徽標和遙測訊息 | 錯誤的 |
DOTNET_CLI_TELEMETRY_OPTOUT | 選擇不將遙測資料傳送給 Microsoft | 錯誤的 |
DOTNET_MULTILILEVEL_LOOKUP | 配置全域安裝位置是否用作後備位置 | 真的 |
NUGET_PACKAGES | 配置 NuGet global-packages 夾的路徑 | 每個作業系統的預設值 |
DOTNET_INSTALL_DIR
和NUGET_PACKAGES
環境變數的預設值取決於執行器上使用的作業系統:
作業系統 | DOTNET_INSTALL_DIR | NUGET_PACKAGES |
---|---|---|
視窗 | C:Program Filesdotnet | %userprofile%.nugetpackages |
烏班圖 | /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 許可證下發布的
歡迎貢獻!請參閱貢獻者指南