- Mulai .NET 10 Preview 4, kini tersedia fitur untuk langsung menjalankan satu file C# dengan
dotnet run app.cs, sehingga kode C# bisa dijalankan tanpa file proyek
- Berkat file-based apps, menjalankan skrip sederhana, pengujian, dan eksperimen ide menjadi jauh lebih mudah, seperti di Python atau JavaScript
- Referensi paket NuGet, penentuan SDK, pengaturan properti build juga bisa dikelola melalui directive di dalam file, sehingga fleksibilitas pengembangan meningkat
- Dukungan shebang memungkinkan pemakaian untuk utilitas CLI, skrip otomatisasi, dan lainnya di sistem mirip Unix
- Jika diperlukan, aplikasi bisa diubah dengan mulus menjadi aplikasi berbasis proyek, sehingga alurnya natural dari belajar dan prototipe hingga pengembangan aplikasi yang sesungguhnya
Apa itu dotnet run app.cs
- Sebelumnya, untuk menjalankan kode C# dengan CLI
dotnet, struktur proyek (.csproj) selalu dibutuhkan
- Kini, cukup dengan satu file .cs saja, kode bisa langsung dijalankan sehingga hambatan awal berkurang drastis
- Cocok untuk berbagai kebutuhan seperti bahasa skrip, otomatisasi, eksperimen, dan pembelajaran
- Berkat integrasi CLI, cukup punya dotnet tanpa perlu memasang alat tambahan
- Jika kode membesar, aplikasi dapat diperluas menjadi aplikasi berbasis proyek dengan bahasa dan tool yang sama
Dukungan directive tingkat file
- Pada aplikasi berbasis file, pengaturan penting proyek juga bisa langsung dideklarasikan sebagai directive di dalam file .cs
-
Referensi paket NuGet
- Dengan directive
#:package, paket NuGet bisa langsung direferensikan
-
Menentukan SDK
- Dengan directive
#:sdk, jenis SDK dapat ditentukan
-
Mengatur properti MSBuild
- Dengan
#:property, properti build bisa ditentukan secara langsung
-
Dukungan shebang untuk skrip shell
- Tambahkan
#!/usr/bin/dotnet run di baris paling atas file agar bisa langsung dipakai sebagai file eksekusi di sistem mirip Unix
Konversi ke aplikasi berbasis proyek
Perbedaan dengan pendekatan skrip C# sebelumnya
- Selama ini, eksekusi skrip C# memang dimungkinkan lewat tool komunitas seperti CS-Script, dotnet-script, Cake dan lainnya, tetapi memerlukan instalasi dan konfigurasi terpisah
- Kini, tanpa instalasi atau mode tambahan, Anda bisa langsung menjalankan kode dengan compiler dan bahasa C# yang sama tanpa hambatan awal
Cara memulai
- Instal .NET 10 Preview 4
- Jika menggunakan Visual Studio Code, perlu memasang C# Dev Kit dan ekstensi C# versi prarilis terbaru (2.79.8 atau lebih baru)
- Buat file
.cs, lalu tulis kode langsung di dalamnya
- Jalankan
dotnet run hello.cs di terminal
- Jika perlu, ubah menjadi proyek dengan
dotnet project convert hello.cs
Pelajari lebih lanjut
Rencana ke depan
- Dukungan aplikasi berbasis file di VS Code serta peningkatan IntelliSense untuk directive, performa, dan debugging akan ditambahkan
- Fitur tambahan seperti dukungan multi-file dan peningkatan kecepatan eksekusi juga sedang dikembangkan
dotnet run app.cs membuat C# lebih mudah diakses sambil tetap menghadirkan kekuatan .NET sepenuhnya
- Menyediakan fondasi untuk beralih lebih cepat dari prototyping, pendidikan, hingga pengembangan produksi
4 komentar
DX yang menyediakan pengalaman pelengkapan otomatis berbasis File-based App sudah tersedia di versi terbaru ekstensi C#, tetapi sebelumnya Microsoft tidak menerbitkan ekstensi tersebut di lokasi selain VS Code Marketplace.
Untuk mengatasi ketidaknyamanan ini, hanya bagian C# Extension dari C# Dev Kit (bagian berlisensi MIT) yang dibuat agar dapat di-autobuild/auto-publish secara terpisah lalu didaftarkan ke OpenVSX, dan saya membagikan video demo sederhana berbasis Kiro yang dibuat berdasarkan hal tersebut.
https://www.youtube.com/watch?v=pIi7CWOPQSA
Saat sebelumnya saya menggunakan fitur C# Interactive, paket yang tidak terpasang secara lokal tidak bisa digunakan, tetapi sepertinya sekarang sudah diperbaiki.
Komentar Hacker News
npm run <command>go run github.com/kardianos/json/cmd/jsondiff@v1.0.1, dan itu fitur yang cukup kerenshebangdipakai. Saat kuliah dan di wilayah selatan pada era 90-an hingga awal 2000-an, orang biasanya menyebutnya hashbang. Aku baru pertama kali mendengar shebang saat C# mulai populer, padahal istilah itu sebenarnya sudah ada lebih lama, hanya saja aku belum pernah mendengarnya di sekitarkudotnet runsendiri sudah meng-cache hasil kompilasi, jadi tidak perlu lapisan caching terpisah (untuk menonaktifkannya pakai--no-build, untuk melihat path binary pakai--artifacts-path)dotnetjuga berencana menghadirkan mode interpreted penuh di versi 10 atau 11. Aku penasaran apakah mode itu akan diterapkan untuk penggunaan seperti ini https://github.com/dotnet/runtime/issues/112748*.main.ktsagar berfungsi). Pendekatan seperti ini sangat bagus untuk script kecil atau prototyping, dan juga praktis untuk memanfaatkan fitur JVM. Meski begitu, untuk script kecil Ruby tetap yang paling nyaman, terutama karena sintaks backtick untuk menjalankan program eksternal benar-benar praktisdotnet run <file>bisa jalan. Setelah update, semuanya normal. Penyebab masalahnya ternyata file memakai line ending CRLF, bukan LF#!/usr/local/share/dotnet/dotnet runatau#!/usr/bin/env -S dotnet rununtuk shebang.dump().dotnet runyang baru ini justru tampaknya bisa menjadi alat pelengkap untuk itu. Dulu aku pernah bekerja di tempat yang sangat membenci PowerShell, dan hampir semua scripting dilakukan dengan LINQPad. Dalam situasi seperti itu, ini bisa bergunadotnet rundi VSCode atau Visual Studio, dan seberapa mirip dengan LINQPad. Kekuatan LINQPad ada pada visualisasi hasil. Kalaudotnet runhanya menampilkan teks atau butuh banyak plugin tambahan, permintaan untuk LINQPad mungkin tetap ada. Kalau hanya perlu memeriksa sintaks dan semacamnya,dotnet runmungkin jadi pilihan yang lebih baik. Aku juga kadang menguji sintaks yang membingungkan di LINQPadSaya juga sudah membuat dua contoh nyata terkait fitur ini, jadi saya bagikan sebagai balasan. Ini adalah kode sampel aplikasi GUI Windows dan macOS yang menggunakan server MCP dan Avalonia. 😊
https://forum.dotnetdev.kr/t/…