การดำเนินการนี้จะตั้งค่าสภาพแวดล้อม .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
action สามารถอ่านเวอร์ชัน .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-version ทำให้สามารถติดตั้งโดยเวอร์ชัน action .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_NOLOGO | ลบโลโก้และข้อความ telemetry ออกจากการทำงานครั้งแรกของ dotnet cli | เท็จ |
DOTNET_CLI_TELEMETRY_OPTOUT | การยกเลิกการวัดและส่งข้อมูลทางไกลที่ถูกส่งไปยัง Microsoft | เท็จ |
DOTNET_MULTILEVEL_LOOKUP | กำหนดค่าว่าจะใช้ตำแหน่งการติดตั้งส่วนกลางเป็นทางเลือกสำรองหรือไม่ | จริง |
NUGET_PACKAGES | กำหนดค่าเส้นทางไปยังโฟลเดอร์ global-packages NuGet | ค่าเริ่มต้นสำหรับแต่ละ OS |
ค่าเริ่มต้นของตัวแปรสภาพแวดล้อม 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
ยินดีบริจาค! ดูคู่มือผู้ร่วมให้ข้อมูล