C # Source Generators untuk meningkatkan kinerja di .NET 5

Microsoft telah memperkenalkan pratinjau kemampuan kompilator C # yang disebut Generator Sumber yang dapat memeriksa program dan menghasilkan file sumber yang dapat ditambahkan ke kompilasi. Microsoft mengatakan Source Generators dapat meningkatkan kinerja dalam sejumlah skenario.

Diperkenalkan pada 29 April, Generator Sumber adalah bagian kode (rakitan .NET Standard 2.0) yang berjalan selama kompilasi dan dapat memeriksa program untuk menghasilkan file tambahan yang dikompilasi bersama dengan kode lainnya.

Source Generators membiarkan pengembang C # melakukan hal berikut:

  • Ambil kompilasi yang mewakili semua kode pengguna yang sedang dikompilasi. Objek ini dapat diperiksa dan pengembang dapat menulis kode yang berfungsi dengan sintaks dan model semantik untuk kode yang sedang dikompilasi, seperti dengan penganalisis.
  • Buat file sumber C # untuk ditambahkan ke objek kompilasi selama kompilasi, dengan kode sumber tambahan disediakan sebagai input saat kode sedang dikompilasi.

Microsoft mengatakan kode pengguna dapat diperiksa bersama dengan metadata kaya yang dibangun kompilator selama kompilasi, dengan kode C # dipancarkan kembali ke kompilasi yang sama berdasarkan data yang dianalisis. Source Generators mirip dengan Roslyn Analyzers yang memeriksa kode C # atau Visual Basic, yang berfungsi sebagai penganalisis yang dapat mengeluarkan kode sumber C #.  

Source Generators akan dikirimkan sebagai bagian dari C # 9. Perusahaan telah membuat Source Generators Cookbook dan dokumen desain Source Generators tersedia untuk membantu pengembang memulai.

Skenario yang mendapat manfaat dari Generator Sumber meliputi:

  • Untuk melakukan refleksi runtime. Dengan menganalisis kode saat aplikasi dimulai, misalnya, fase penemuan pengontrol dapat terjadi pada waktu kompilasi, sehingga waktu mulai lebih cepat.
  • Untuk menghindari penggunaan API "yang diketik dengan string", seperti cara kerja perutean ASP.NET Core antara pengontrol dan halaman Razor. Perutean dapat diketik dengan kuat dan string yang diperlukan dihasilkan sebagai detail waktu kompilasi.
  • Untuk membantu menghilangkan hambatan terhadap pengoptimalan kompilasi berbasis linker dan sebelumnya.

Untuk mengakses Source Generators, pengembang harus menginstal pratinjau .NET 5 terbaru dan pratinjau Visual Studio terbaru.