Dit artikel is een spiegelartikel van machinevertaling, klik hier om naar het oorspronkelijke artikel te gaan.

Bekijken: 3803|Antwoord: 7

[Tips] Gebruik Roslyn om C#-code dynamisch te compileren en uit te voeren

[Link kopiëren]
Geplaatst op 06-07-2024 16:59:03 | | | |
Eisen: Het project moet verschillende algoritmen en logica genereren volgens de behoeften van de klant; op dat moment kan de code niet doodgeschreven zijn en kan een regelengine nodig zijn om de aangepaste logica uit te voeren.

Het .NET Compiler Platform, met de codenaam Roslyn, is Microsofts set open-source compiler- en code-analyse-API's voor de C#- en Visual Basic (VB.NET) talen.

Recensie:

Het verschil tussen de Roslyn MSBuild-compiler
https://www.itsvse.com/thread-9596-1-1.html

.NET/C# Roslyn compilerplatform
https://www.itsvse.com/thread-10740-1-1.html
Maak eerst een nieuwe consoleapplicatie aan met de volgende referentie:

De code is als volgt:



We compileren de C#-code om een test.exe bestandsgrootte te produceren3KB。 Het resulterende bestand test.exe niet als een Windows-uitvoerbaar bestand kunnen worden uitgevoerd, en de foutmelding wordt als volgt gerapporteerd:

Onbeheerde uitzondering: System.IO.FileNotFoundException: Niet kunnen laden van een bestand of assembly "System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e" of een van de afhankelijkheden. Het systeem kan het opgegeven bestand niet vinden.
Voer dus de consoleapplicatie uit met de volgende commando's:

Na uitvoering wordt de fout als volgt gerapporteerd:

Er werd een fatale fout gemaakt. De bibliotheek 'hostpolicy.dll' die nodig was om de applicatie uit te voeren, werd niet gevonden in 'D:\Project\ConsoleApp1\ConsoleApp1\bin\Debug\net8.0\'.
Het is niet gelukt om als zelfstandige app te draaien.
  - De applicatie werd als een zelfstandige app uitgevoerd omdat 'D:\Project\ConsoleApp1\ConsoleApp1\bin\Debug\net8.0\test.runtimeconfig.json' niet werd gevonden.
  - Als dit een framework-afhankelijke app zou moeten zijn, voeg dan het bestand 'D:\Project\ConsoleApp1\ConsoleApp1\bin\Debug\net8.0\test.runtimeconfig.json' toe en specificeer het juiste framework.
Grofweg heb je een *.runtimeconfig.json-bestand nodig, dat runtime-informatie bevat en de gebruikte versie van .NET Core, referentie:De hyperlink-login is zichtbaar.

Maak dus een nieuw test.runtimeconfig.json-bestand aan met de volgende configuratie:

Voer het commando opnieuw uit en ontdek dat het normaal kan worden uitgevoerd, zoals weergegeven in de volgende figuur:



Referentie:

De hyperlink-login is zichtbaar.
De hyperlink-login is zichtbaar.
De hyperlink-login is zichtbaar.





Vorig:.NET/C# zet PDF's om naar afbeeldingen gebaseerd op PDFtoImage
Volgend:ERP Kingdee Cloud Starry Sky (1) Eenvoudig begrip
 Huisbaas| Geplaatst op 06-07-2024 16:59:46 |
.NET/C# implementeert DLL-plugin hot updates gebaseerd op AssemblyLoadContext
https://www.itsvse.com/thread-10783-1-1.html
 Huisbaas| Geplaatst op 24-07-2024 17:25:55 |
 Huisbaas| Geplaatst op 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\ 区别



Referentieassemblages (type-informatie en metadata, exclusief specifieke implementaties!) ):C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\8.0.11\ref\net8.0
Runtime-bibliotheek (specifieke implementatie): C:\Program Files\dotnet\shared\Microsoft.NETCore.App\8.0.11\



 Huisbaas| Geplaatst op 03-12-2024 10:16:03 |
Referentieassemblages en documentatie




 Huisbaas| Geplaatst op 10-12-2024 17:46:00 |
Tegelijkertijd kun je een symboolbestand (.pdb) genereren.
 Huisbaas| Geplaatst op 10-12-2024 17:49:22 |
Configureer release-modus
 Huisbaas| Geplaatst op 30-06-2025 13:40:49 |
Kleine Geplaatst op 24-7-2024 17:25
https://github.com/roslynpad/roslynpad/releases

LINQPad:https://www.linqpad.net/
Disclaimer:
Alle software, programmeermaterialen of artikelen die door Code Farmer Network worden gepubliceerd, zijn uitsluitend bedoeld voor leer- en onderzoeksdoeleinden; De bovenstaande inhoud mag niet worden gebruikt voor commerciële of illegale doeleinden, anders dragen gebruikers alle gevolgen. De informatie op deze site komt van het internet, en auteursrechtconflicten hebben niets met deze site te maken. Je moet bovenstaande inhoud volledig van je computer verwijderen binnen 24 uur na het downloaden. Als je het programma leuk vindt, steun dan de echte software, koop registratie en krijg betere echte diensten. Als er sprake is van een inbreuk, neem dan contact met ons op via e-mail.

Mail To:help@itsvse.com