此操作通过以下方式设置 .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
输入只能与主版本高于 5 的 .NET SDK 版本(“A.B”、“ABx”、“A”、“Ax”和“ABCxx”格式)一起使用。在其他情况下,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 包自 .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 许可证下发布的
欢迎贡献!请参阅贡献者指南