Bu makale makine çevirisi ayna makalesidir, orijinal makaleye geçmek için lütfen buraya tıklayın.

Görünüm: 3803|Yanıt: 7

[İpucu] Roslyn'i kullanarak C# kodunu dinamik olarak derleyin ve çalıştırın

[Bağlantıyı kopyala]
Yayınlandı 6.07.2024 16:59:03 | | | |
Gereksinimler: Proje, müşterinin ihtiyaçlarına göre farklı algoritmalar ve mantıklar üretmelidir; şu anda kod ölü yazılmamış olabilir ve özelleştirilmiş mantığı çalıştırmak için bazı kural motorları gerekebilir.

.NET Derleyici Platformu, kod adı Roslyn, Microsoft'un C# ve Visual Basic (VB.NET) dilleri için açık kaynaklı derleyici ve kod analiz API'leri setidir.

Eleştiri:

Roslyn MSBuild derleyicisi arasındaki fark
https://www.itsvse.com/thread-9596-1-1.html

.NET/C# Roslyn derleyici platformu
https://www.itsvse.com/thread-10740-1-1.html
İlk olarak, aşağıdaki referansla yeni bir konsol uygulaması oluşturun:

Kod şöyledir:



C# kodunu sadece test.exe dosya boyutu üretecek şekilde derliyoruz3KB。 Ortaya çıkan dosya test.exe Windows çalıştırılabilir dosyası olarak çalıştırılamaz ve hata aşağıdaki şekilde bildirilir:

Yönetilmeyen İstisna: System.IO.FileNotFoundException: "System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e" veya bağımlılıklarından biri dosya veya assembly yüklenemedi. Sistem belirtilen dosyayı bulamıyor.
Bu yüzden, konsol uygulamasını aşağıdaki komutlarla çalıştırın:

Uygulamadan sonra hata aşağıdaki şekilde bildirilir:

Ölümcül bir hata yaşandı. Uygulamayı çalıştırmak için gereken 'hostpolicy.dll' kütüphanesi 'D:\Project\ConsoleApp1\ConsoleApp1\bin\Debug\net8.0\' dosyasında bulunmamıştır.
Kendi kendine yeten bir uygulama olarak çalışamadım.
  - Uygulama kendi içinde çalışan bir uygulama olarak çalıştırıldı çünkü 'D:\Project\ConsoleApp1\ConsoleApp1\bin\Debug\net8.0\test.runtimeconfig.json' bulunamadı.
  - Eğer bu çerçeveye bağlı bir uygulama ise, 'D:\Project\ConsoleApp1\ConsoleApp1\bin\Debug\net8.0\test.runtimeconfig.json' dosyasını ekleyin ve uygun çerçeveyi belirtin.
Kabaca olarak, çalışma zamanı bilgilerini ve kullanılan .NET Core sürümünü içeren bir *.runtimeconfig.json dosyasına ihtiyacınız var, referans:Bağlantı girişi görünür.

Bu yüzden, aşağıdaki yapılandırmayla yeni bir test.runtimeconfig.json dosyası oluşturun:

Komutu tekrar çalıştırın ve aşağıdaki şekilde gösterildiği gibi normal şekilde çalıştırılabildiğini görün:



Referans:

Bağlantı girişi görünür.
Bağlantı girişi görünür.
Bağlantı girişi görünür.





Önceki:.NET/C#, PDFtoImage temelinde PDF'leri görsellere dönüştürür
Önümüzdeki:ERP Kingdee Cloud Starry Sky (1) Basit anlayış
 Ev sahibi| Yayınlandı 6.07.2024 16:59:46 |
.NET/C#, AssemblyLoadContext tabanlı DLL eklenti sıcak güncellemelerini uygular
https://www.itsvse.com/thread-10783-1-1.html
 Ev sahibi| Yayınlandı 24.07.2024 17:25:55 |
 Ev sahibi| Yayınlandı 3.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\ 区别



Referans montajları (tür bilgisi ve meta veriler, belirli uygulamalar hariç!) ):C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\8.0.11\ref\net8.0
Çalışma zamanı kütüphanesi (özel uygulama): C:\Program Files\dotnet\shared\Microsoft.NETCore.App\8.0.11\



 Ev sahibi| Yayınlandı 3.12.2024 10:16:03 |
Referans montajları ve dokümantasyon




 Ev sahibi| Yayınlandı 10.12.2024 17:46:00 |
Aynı zamanda, bir sembol dosyası (.pdb) oluşturabilirsiniz
 Ev sahibi| Yayınlandı 10.12.2024 17:49:22 |
Serbest bırakma modunu yapılandır
 Ev sahibi| Yayınlandı 30.06.2025 13:40:49 |
Küçük 2024-7-24 17:25 tarihinde yayınlandı
https://github.com/roslynpad/roslynpad/releases

LINQPad:https://www.linqpad.net/
Feragatname:
Code Farmer Network tarafından yayımlanan tüm yazılım, programlama materyalleri veya makaleler yalnızca öğrenme ve araştırma amaçları içindir; Yukarıdaki içerik ticari veya yasa dışı amaçlarla kullanılamaz, aksi takdirde kullanıcılar tüm sonuçları ödemelidir. Bu sitedeki bilgiler internetten alınmakta olup, telif hakkı anlaşmazlıklarının bu siteyle hiçbir ilgisi yoktur. Yukarıdaki içeriği indirmeden sonraki 24 saat içinde bilgisayarınızdan tamamen silmelisiniz. Programı beğendiyseniz, lütfen orijinal yazılımı destekleyin, kayıt satın alın ve daha iyi orijinal hizmetler alın. Herhangi bir ihlal olursa, lütfen bizimle e-posta yoluyla iletişime geçin.

Mail To:help@itsvse.com