يقوم هذا الإجراء بإعداد بيئة .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
، بما في ذلك الإصدارات التجريبية (معاينة، 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 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
فقط، لذلك من المحتمل أن تحصل على الخطأ NU1403 عند تشغيلdotnet restore
. لتجنب ذلك، يمكنك استخدام خيارDisableImplicitNuGetFallbackFolder
.
< PropertyGroup >
< DisableImplicitNuGetFallbackFolder >true</ DisableImplicitNuGetFallbackFolder >
</ PropertyGroup >
ملاحظة : استخدم متغير البيئة
NUGET_PACKAGES
إذا كان متاحًا. بعض متسابقي الحركة لديهم بالفعل مكتبات ضخمة. (مثال: زامارين)
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 ، من الممكن تثبيت الإصدار .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
Env.variable | وصف | القيمة الافتراضية |
---|---|---|
DOTNET_INSTALL_DIR | يحدد الدليل الذي يجب أن يتم فيه تثبيت .NET SDKs من خلال الإجراء. | القيمة الافتراضية لكل نظام تشغيل |
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 |
ماك | /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
المساهمات هي موضع ترحيب! راجع دليل المساهمين