Artikel ini adalah artikel cermin dari terjemahan mesin, silakan klik di sini untuk melompat ke artikel aslinya.

Melihat: 3803|Jawab: 7

[Kiat] Gunakan Roslyn untuk mengkompilasi kode C# secara dinamis dan menjalankannya

[Salin tautan]
Diposting pada 06/07/2024 16.59.03 | | | |
Persyaratan: Proyek perlu menghasilkan algoritme dan logika yang berbeda sesuai dengan kebutuhan pelanggan, saat ini, kode mungkin tidak ditulis mati, dan beberapa mesin aturan mungkin diperlukan untuk menjalankan logika yang disesuaikan.

Platform Kompiler .NET, dengan nama kode Roslyn, adalah kumpulan API pengkompilasi sumber terbuka dan analisis kode Microsoft untuk bahasa C# dan Visual Basic (VB.NET).

Resensi:

Perbedaan antara kompiler Roslyn MSBuild
https://www.itsvse.com/thread-9596-1-1.html

Platform kompiler .NET/C# Roslyn
https://www.itsvse.com/thread-10740-1-1.html
Pertama, buat aplikasi konsol baru dengan referensi berikut:

Kodenya adalah sebagai berikut:



Kami mengkompilasi kode C# untuk menghasilkan ukuran file test.exe saja3KB。 File yang dihasilkan test.exe tidak dapat dijalankan sebagai Windows yang dapat dieksekusi, dan kesalahan dilaporkan sebagai berikut:

Pengecualian yang Tidak Ditangani: System.IO.FileNotFoundException: Gagal memuat file atau rakitan "System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e" atau salah satu dependensinya. Sistem tidak dapat menemukan file yang ditentukan.
Jadi, jalankan aplikasi konsol dengan perintah berikut:

Setelah eksekusi, kesalahan dilaporkan sebagai berikut:

Kesalahan fatal ditemui. 'hostpolicy.dll' pustaka yang diperlukan untuk menjalankan aplikasi tidak ditemukan di 'D:\Project\ConsoleApp1\ConsoleApp1\bin\Debug\net8.0\'.
Gagal berjalan sebagai aplikasi mandiri.
  - Aplikasi dijalankan sebagai aplikasi mandiri karena 'D:\Project\ConsoleApp1\ConsoleApp1\bin\Debug\net8.0\test.runtimeconfig.json' tidak ditemukan.
  - Jika ini adalah aplikasi yang bergantung pada kerangka kerja, tambahkan file 'D:\Project\ConsoleApp1\ConsoleApp1\bin\Debug\net8.0\test.runtimeconfig.json' dan tentukan kerangka kerja yang sesuai.
Secara kasar, Anda memerlukan file *.runtimeconfig.json, yang berisi informasi runtime dan versi .NET Core yang digunakan, referensi:Login hyperlink terlihat.

Jadi, buat file test.runtimeconfig.json baru dengan konfigurasi berikut:

Jalankan kembali perintah dan temukan bahwa perintah tersebut dapat dijalankan secara normal, seperti yang ditunjukkan pada gambar berikut:



Referensi:

Login hyperlink terlihat.
Login hyperlink terlihat.
Login hyperlink terlihat.





Mantan:.NET/C# mengonversi PDF menjadi gambar berdasarkan PDFtoImage
Depan:ERP Kingdee Cloud Starry Sky (1) Pemahaman sederhana
 Tuan tanah| Diposting pada 06/07/2024 16.59.46 |
.NET/C# mengimplementasikan pembaruan panas plugin DLL berdasarkan AssemblyLoadContext
https://www.itsvse.com/thread-10783-1-1.html
 Tuan tanah| Diposting pada 24/07/2024 17.25.55 |
 Tuan tanah| Diposting pada 03/12/2024 10.14.58 |
C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\8.0.11\ref\net8.0 和 C:\Program Files\dotnet\shared\Microsoft.NETCore.App\8.0.11\ 区别



Rakitan referensi (jenis informasi dan metadata, tidak termasuk implementasi tertentu!) ):C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\8.0.11\ref\net8.0
Pustaka runtime (implementasi khusus): C:\Program Files\dotnet\shared\Microsoft.NETCore.App\8.0.11\



 Tuan tanah| Diposting pada 03/12/2024 10.16.03 |
Rakitan dan dokumentasi referensi




 Tuan tanah| Diposting pada 10/12/2024 17.46.00 |
Pada saat yang sama, Anda dapat membuat file simbol (.pdb)
 Tuan tanah| Diposting pada 10/12/2024 17.49.22 |
Mengonfigurasi mode rilis
 Tuan tanah| Diposting pada 30/06/2025 13.40.49 |
Terak kecil Dipaparkan pada 2024-7-24 17:25
https://github.com/roslynpad/roslynpad/releases

LINQPad:https://www.linqpad.net/
Sanggahan:
Semua perangkat lunak, materi pemrograman, atau artikel yang diterbitkan oleh Code Farmer Network hanya untuk tujuan pembelajaran dan penelitian; Konten di atas tidak boleh digunakan untuk tujuan komersial atau ilegal, jika tidak, pengguna akan menanggung semua konsekuensi. Informasi di situs ini berasal dari Internet, dan sengketa hak cipta tidak ada hubungannya dengan situs ini. Anda harus sepenuhnya menghapus konten di atas dari komputer Anda dalam waktu 24 jam setelah pengunduhan. Jika Anda menyukai program ini, harap dukung perangkat lunak asli, pembelian pendaftaran, dan dapatkan layanan asli yang lebih baik. Jika ada pelanggaran, silakan hubungi kami melalui email.

Mail To:help@itsvse.com