Denne artikkelen er en speilartikkel om maskinoversettelse, vennligst klikk her for å hoppe til originalartikkelen.

Utsikt: 3803|Svare: 7

[Tips] Bruk Roslyn til å kompilere C#-kode dynamisk og kjør den

[Kopier lenke]
Publisert på 06.07.2024 16:59:03 | | | |
Krav: Prosjektet må generere ulike algoritmer og logikk i henhold til kundens behov, på dette tidspunktet kan koden ikke være skrevet død, og en regelmotor kan være nødvendig for å utføre den tilpassede logikken.

.NET Compiler Platform, med kodenavnet Roslyn, er Microsofts sett med åpen kildekode-kompilator- og kodeanalyse-API-er for språkene C# og Visual Basic (VB.NET).

Anmeldelse:

Forskjellen mellom Roslyn MSBuild-kompilatoren
https://www.itsvse.com/thread-9596-1-1.html

.NET/C# Roslyn-kompilatorplattform
https://www.itsvse.com/thread-10740-1-1.html
Først, lag en ny konsollapplikasjon med følgende referanse:

Koden er som følger:



Vi kompilerer C#-koden for å lage en test.exe filstørrelse kun3KB。 Den resulterende filen test.exe kan ikke kjøres som en Windows-kjørbar fil, og feilen rapporteres som følger:

Ubehandlet unntak: System.IO.FileNotFoundException: Klarte ikke å laste inn en fil eller assembler "System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e" eller en av dens avhengigheter. Systemet kan ikke finne den angitte filen.
Så kjør konsollapplikasjonen med følgende kommandoer:

Etter utførelse rapporteres feilen som følger:

En fatal feil oppsto. Biblioteket 'hostpolicy.dll' som krevdes for å kjøre applikasjonen ble ikke funnet i 'D:\Project\ConsoleApp1\ConsoleApp1\bin\Debug\net8.0\'.
Klarte ikke å kjøre som en selvstendig app.
  - Applikasjonen ble kjørt som en selvstendig app fordi 'D:\Project\ConsoleApp1\ConsoleApp1\bin\Debug\net8.0\test.runtimeconfig.json' ikke ble funnet.
  - Hvis dette skal være en rammeverksavhengig app, legg til filen 'D:\Project\ConsoleApp1\ConsoleApp1\bin\Debug\net8.0\test.runtimeconfig.json' og spesifiser riktig rammeverk.
Grovt sagt trenger du en *.runtimeconfig.json-fil, som inneholder runtime-informasjon og versjonen av .NET Core som brukes, referanse:Innloggingen med hyperkoblingen er synlig.

Så, lag en ny test.runtimeconfig.json-fil med følgende konfigurasjon:

Kjør kommandoen på nytt og finn at den kan utføres normalt, som vist i følgende figur:



Referanse:

Innloggingen med hyperkoblingen er synlig.
Innloggingen med hyperkoblingen er synlig.
Innloggingen med hyperkoblingen er synlig.





Foregående:.NET/C# konverterer PDF-er til bilder basert på PDFtoImage
Neste:ERP Kingdee Cloud Starry Sky (1) Enkel forståelse
 Vert| Publisert på 06.07.2024 16:59:46 |
.NET/C# implementerer DLL-plugin-hot updates basert på AssemblyLoadContext
https://www.itsvse.com/thread-10783-1-1.html
 Vert| Publisert på 24.07.2024 17:25:55 |
 Vert| Publisert på 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\ 区别



Referansesammensetninger (typeinformasjon og metadata, ikke inkludert spesifikke implementasjoner!) ):C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\8.0.11\ref\net8.0
Runtime-bibliotek (spesifikk implementering): C:\Program Files\dotnet\shared\Microsoft.NETCore.App\8.0.11\



 Vert| Publisert på 03.12.2024 10:16:03 |
Referansesamlinger og dokumentasjon




 Vert| Publisert på 10.12.2024 17:46:00 |
Samtidig kan du generere en symbolfil (.pdb)
 Vert| Publisert på 10.12.2024 17:49:22 |
Konfigurer utløsningsmodus
 Vert| Publisert på 30.06.2025 13:40:49 |
Lille slak Publisert 2024-07.24 kl. 17:25
https://github.com/roslynpad/roslynpad/releases

LINQPad:https://www.linqpad.net/
Ansvarsfraskrivelse:
All programvare, programmeringsmateriell eller artikler publisert av Code Farmer Network er kun for lærings- og forskningsformål; Innholdet ovenfor skal ikke brukes til kommersielle eller ulovlige formål, ellers skal brukerne bære alle konsekvenser. Informasjonen på dette nettstedet kommer fra Internett, og opphavsrettstvister har ingenting med dette nettstedet å gjøre. Du må fullstendig slette innholdet ovenfor fra datamaskinen din innen 24 timer etter nedlasting. Hvis du liker programmet, vennligst støtt ekte programvare, kjøp registrering, og få bedre ekte tjenester. Hvis det foreligger noen krenkelse, vennligst kontakt oss på e-post.

Mail To:help@itsvse.com