Это действие настраивает среду .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
, включая предварительные версии (preview, rc)..NET 5.0
. Устанавливает последнюю версию определенного выпуска SDK, включая предварительные версии (предварительная версия, rc). dotnet-quality
Этот ввод настраивает действие по установке последней сборки указанного качества в канал. Возможные значения dotnet-quality
: daily , Signed , Validated , Preview , ga .
Примечание . Входные данные
dotnet-quality
можно использовать только с версией .NET SDK в форматах «A.B», «ABx», «A», «Ax» и «ABCxx», где основная версия выше 5. В других случаях , входные данные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
может читать версию .NET SDK из файла global.json
. Входной 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 ( 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
, поэтому вы, вероятно, получите ошибку NU1403 при запускеdotnet restore
. Чтобы избежать этого, вы можете использовать опцию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 }}
Примечание . Это единственный способ отправить пакет в канал nuget.org для компьютеров MacOS/Linux из-за ограничений хранилища конфигурации ключей API.
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 | Указывает каталог, в который с помощью действия должны быть установлены пакеты SDK для .NET. | значение по умолчанию для каждой ОС |
DOTNET_NOLOGO | Удаляет логотип и сообщение телеметрии при первом запуске dotnet cli. | ЛОЖЬ |
DOTNET_CLI_TELEMETRY_OPTOUT | Отказ от отправки телеметрии в Microsoft | ЛОЖЬ |
DOTNET_MULTILEVEL_LOOKUP | Настраивает, будет ли глобальное расположение установки использоваться в качестве резервного варианта. | истинный |
NUGET_PACKAGES | Настраивает путь к папке global-packages NuGet. | значение по умолчанию для каждой ОС |
Значения по умолчанию переменных среды 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.
Вклады приветствуются! См. Руководство для участников