Microsoft ปล่อย .NET 10 Preview 6 เมื่อวันที่ 15 กรกฎาคม 2024 โดยนำมาซึ่งการปรับปรุงที่น่าสนใจหลายประการ รวมถึงการสร้างโค้ด JIT ที่ดีขึ้นและการรันเครื่องมือแบบครั้งเดียว แม้ว่าการอัปเดตนี้จะแนะนำฟีเจอร์ที่มีประโยชน์ แต่การตอบสนองของชุมชนนักพัฒนาเผยให้เห็นความกังวลที่ยังคงอยู่เกี่ยวกับความน่าเชื่อถือของเครื่องมือและทิศทางเชิงกลยุทธ์ของแพลตฟอร์มที่อาจส่งผลต่อการตัดสินใจในการนำไปใช้
คุณสมบัติหลักของ .NET 10 Preview 6
- การปรับปรุง JIT: ปรับปรุงการสร้างโค้ดสำหรับอาร์กิวเมนต์ struct ที่มีสมาชิกที่ถูกส่งเสริมในรีจิสเตอร์ที่ใช้ร่วมกัน
- การรันเครื่องมือแบบครั้งเดียว: คำสั่ง
dotnet tool exec
สำหรับการรันเครื่องมือโดยไม่ต้องติดตั้ง - การรองรับเครื่องมือหลายแพลตฟอร์ม: เครื่องมือสามารถรวมไบนารีสำหรับ RuntimeIdentifiers (RIDs) หลายตัวได้แล้ว
- การเผยแพร่ไฟล์ปฏิบัติการแบบ Native: แอปพลิเคชันแบบไฟล์รองรับการเผยแพร่เป็นไฟล์ปฏิบัติการแบบ native ผ่าน
dotnet publish app.cs
- การปรับปรุงความปลอดภัย JSON: ตัวเลือกใหม่ในการไม่อนุญาตให้มี JSON properties ที่ซ้ำกันระหว่างการ deserialization
- การแสดงผล CLI Schema: ตัวเลือก
cli-schema
ใหม่ที่ให้การแสดงผลแบบ JSON ของโครงสร้างคำสั่ง CLI
![]() |
---|
ภาพรวมของการเปิดตัว NET 10 Preview 6 และคุณสมบัติสำคัญต่างๆ |
การรันเครื่องมือแบบครั้งเดียวตอบสนองความต้องการด้าน Scripting ที่มีมานาน
การแนะนำ dotnet tool exec
ช่วยให้นักพัฒนาสามารถรันเครื่องมือ .NET โดยไม่ต้องติดตั้งในเครื่องหรือแบบ global ฟีเจอร์นี้มีประโยชน์เป็นพิเศษสำหรับ CI/CD pipeline และสถานการณ์การใช้งานชั่วคราว สมาชิกชุมชนได้ต้อนรับการเพิ่มฟีเจอร์นี้ โดยสังเกตว่ามันทำให้ C# เข้าใกล้ความสามารถด้าน scripting ที่ F# ได้รับผ่าน dotnet fsi
ฟีเจอร์นี้ช่วยให้นักพัฒนาสามารถรันไฟล์ C# เป็น script โดยไม่ต้องมีขั้นตอนการ build ทำให้ภาษานี้เหมาะสมกับงานอัตโนมัติที่รวดเร็วและยูทิลิตี้แบบใช้ครั้งเดียว
ปัญหาเครื่องมือที่ยังคงอยู่ทำให้ประสบการณ์การพัฒนาน่าหงุดหงิด
แม้จะมีฟีเจอร์ใหม่ แต่นักพัฒนายังคงรายงานปัญหาสำคัญเกี่ยวกับประสบการณ์การพัฒนา ฟังก์ชัน hot reload ใน dotnet watch
ยังคงไม่น่าเชื่อถือ โดยการเปลี่ยนแปลง CSS บางครั้งไม่ถูกตรวจจับแม้ว่าจะใช้ flag --no-hot-reload
ผู้ใช้ Visual Studio รายงานปัญหาที่ยังคงอยู่เกี่ยวกับ syntax highlighting และ IntelliSense สำหรับ Blazor component ซึ่งเป็นปัญหาที่ยังคงอยู่ตลอดหลายเวอร์ชัน ปัญหาเครื่องมือเหล่านี้สร้างความไม่แน่นอนระหว่างการพัฒนา ทำให้ยากต่อการแยกแยะระหว่างข้อผิดพลาดจากการเขียนโค้ดจริงกับการทำงานผิดปกติของเครื่องมือ
สิ่งที่ฉันต้องการคือให้ dotnet watch ทำงานในลักษณะที่คาดเดาได้ ใน .NET 9 แม้ว่าจะใช้ —no-hot-reload แต่บางครั้งการเปลี่ยนแปลง CSS ของ component ไม่ถูกตรวจจับใน Blazor component
เครื่องมือจัดรูปแบบโค้ดยังตามมาตรฐานอุตสาหกรรมไม่ทัน
ระบบนิเวศ .NET ยังขาดเครื่องมือจัดรูปแบบโค้ดที่มีความเห็นชัดเจนและได้รับการยอมรับอย่างกว้างขวาง เทียบได้กับ Prettier ในโลก JavaScript แม้ว่าเครื่องมืออย่าง CSharpier จะมีอยู่และได้รับความนิยมบ้าง แต่ทีมองค์กรหลายแห่งยังลังเลที่จะนำการจัดรูปแบบอัตโนมัติมาใช้ คำสั่ง dotnet format
ที่มีอยู่แล้วเสนอตัวเลือกการกำหนดค่าที่กว้างขวาง แต่ต้องการการตั้งค่าที่ซับซ้อนเพื่อให้ได้การจัดรูปแบบที่สม่ำเสมอ การแยกส่วนนี้บังคับให้ทีมต้องพึ่งพาการจัดรูปแบบเฉพาะ IDE เป็นหลัก ซึ่งสร้างความท้าทายในสภาพแวดล้อมการพัฒนาแบบผสมที่สมาชิกทีมใช้ editor ที่แตกต่างกัน
เครื่องมือจัดรูปแบบโค้ดที่ชุมชนกล่าวถึง
เครื่องมือ | ประเภท | ระดับการใช้งาน | คุณสมบัติหลัก |
---|---|---|---|
CSharpier | บุคคลที่สาม | กำลังเติบโต (2k ดาว GitHub) | การจัดรูปแบบแบบมีความเห็น, กำหนดได้แน่นอน |
dotnet format | Microsoft อย่างเป็นทางการ | ในตัว | ปรับแต่งได้สูง, รวมเข้ากับ analyzers |
StyleCop | เก่า | ลดลง | บังคับใช้เลย์เอาต์ไฟล์และการตั้งชื่อ |
Roslynator | Analyzer | ใช้งานอยู่ | การวิเคราะห์โค้ดและการแก้ไข |
ความกังวลเรื่องการนำแพลตฟอร์มไปใช้ท่ามกลางการเลือกใช้เทคโนโลยีของ Microsoft เอง
การอภิปรายในชุมชนเผยให้เห็นความกังวลที่เพิ่มขึ้นเกี่ยวกับการนำ .NET ไปใช้ในอนาคต โดยเฉพาะอย่างยิ่งเมื่อพิจารณาจากการเลือกใช้เทคโนโลยีของ Microsoft เองในบริการ Azure โปรเจ็กต์ CNCF หลายโปรเจ็กต์ที่ Microsoft มีส่วนร่วมถูกเขียนด้วย Go หรือ Rust มากกว่า .NET ซึ่งทำให้เกิดคำถามเกี่ยวกับการสนับสนุนภายในของแพลตฟอร์ม การตัดสินใจที่จะเขียน TypeScript tooling ใหม่ด้วย Go แทนที่จะสร้างเวอร์ชัน .NET ทำให้นักพัฒนาบางคนผิดหวัง เพราะเห็นว่าเป็นโอกาสที่พลาดไปในการแสดงความสามารถของแพลตฟอร์ม
การถกเถียงเรื่องวงจรชีวิตของ Framework ยังคงดำเนินต่อไป
ชุมชนยังคงแบ่งออกเป็นสองฝ่ายเกี่ยวกับรอบการสนับสนุนสามปีของ Microsoft สำหรับเวอร์ชัน .NET ในขณะที่นักพัฒนาบางคนชื่นชมการอัปเดตเป็นประจำและพบว่าการอัปเกรดค่อนข้างง่าย นักพัฒนาคนอื่นๆ กลับชอบความเสถียรของ .NET Framework 4.8 ที่มีไทม์ไลน์การสนับสนุนที่ยาวนานกว่า ความแตกต่างของขนาด deployment ยังคงเป็นความกังวลในทางปฏิบัติ โดยแอปพลิเคชัน .NET Framework มักจะส่งผลให้ได้ไฟล์ executable ที่เล็กกว่าเนื่องจาก framework ถูกติดตั้งไว้ล่วงหน้าในระบบ Windows ในขณะที่แอปพลิเคชัน .NET Core สามารถมีขนาดถึง 70-80MB เมื่อเป็นแบบ self-contained
การตอบรับที่หลากหลายของ .NET 10 Preview 6 เน้นย้ำถึงความสามารถทางเทคนิคของแพลตฟอร์มควบคู่ไปกับความท้าทายที่ยังคงอยู่ในประสบการณ์นักพัฒนาและการวางตำแหน่งเชิงกลยุทธ์ แม้ว่าการปรับปรุงประสิทธิภาพและฟีเจอร์ใหม่จะแสดงให้เห็นถึงนวัตกรรมที่ต่อเนื่อง แต่การแก้ไขความน่าเชื่อถือของเครื่องมือและความสอดคล้องของระบบนิเวศอาจเป็นสิ่งสำคัญสำหรับการรักษาความเชื่อมั่นของนักพัฒนาและการดึงดูดผู้ใช้ใหม่เข้าสู่แพลตฟอร์ม
อ้างอิง: .NET 10 Preview 6 brings JIT improvements, one-shot tool execution