Dieser Artikel ist ein Spiegelartikel der maschinellen Übersetzung, bitte klicken Sie hier, um zum Originalartikel zu springen.

Ansehen: 3803|Antwort: 7

[Tipps] Verwenden Sie Roslyn, um C#-Code dynamisch zu kompilieren und ausführen

[Link kopieren]
Veröffentlicht am 06.07.2024 16:59:03 | | | |
Anforderungen: Das Projekt muss unterschiedliche Algorithmen und Logiken entsprechend den Bedürfnissen des Kunden generieren; zu diesem Zeitpunkt ist der Code möglicherweise nicht tot geschrieben, und eine Regel-Engine kann erforderlich sein, um die angepasste Logik auszuführen.

Die .NET Compiler Platform mit dem Codenamen Roslyn ist Microsofts Sammlung von Open-Source-Compiler- und Codeanalyse-APIs für die Sprachen C# und Visual Basic (VB.NET).

Rezension:

Der Unterschied zwischen dem Roslyn MSBuild-Compiler
https://www.itsvse.com/thread-9596-1-1.html

.NET/C# Roslyn-Compiler-Plattform
https://www.itsvse.com/thread-10740-1-1.html
Erstellen Sie zunächst eine neue Konsolenanwendung mit folgender Referenz:

Der Code lautet wie folgt:



Wir kompilieren den C#-Code, um eine test.exe Dateigröße zu erzeugen3KB。 Die resultierende Datei kann test.exe nicht als Windows-ausführbare Datei ausgeführt werden, und der Fehler wird wie folgt gemeldet:

Unbehandelte Ausnahme: System.IO.FileNotFoundException: Es konnte keine Datei oder eine Assemble "System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7798e" oder eine ihrer Abhängigkeiten nicht geladen werden. Das System kann die angegebene Datei nicht finden.
Führen Sie also die Konsolenanwendung mit folgenden Befehlen aus:

Nach der Ausführung wird der Fehler wie folgt gemeldet:

Es wurde ein fataler Fehler gemacht. Die Bibliothek 'hostpolicy.dll', die zur Ausführung der Anwendung erforderlich war, wurde in 'D:\Project\ConsoleApp1\ConsoleApp1\bin\Debug\net8.0\' nicht gefunden.
Es konnte nicht als eigenständige App laufen.
  - Die Anwendung wurde als eigenständige App ausgeführt, weil 'D:\Project\ConsoleApp1\ConsoleApp1\bin\Debug\net8.0\test.runtimeconfig.json' nicht gefunden wurde.
  - Wenn dies eine framework-abhängige App sein sollte, fügen Sie die Datei 'D:\Project\ConsoleApp1\ConsoleApp1\bin\Debug\net8.0\test.runtimeconfig.json' hinzu und geben Sie das passende Framework an.
Grob gesagt benötigen Sie eine *.runtimeconfig.json-Datei, die Laufzeitinformationen und die verwendete .NET Core-Version enthält, Referenz:Der Hyperlink-Login ist sichtbar.

Erstellen Sie also eine neue test.runtimeconfig.json-Datei mit folgender Konfiguration:

Führe den Befehl erneut aus und stelle fest, dass er normal ausgeführt werden kann, wie in der folgenden Abbildung gezeigt:



Referenz:

Der Hyperlink-Login ist sichtbar.
Der Hyperlink-Login ist sichtbar.
Der Hyperlink-Login ist sichtbar.





Vorhergehend:.NET/C# wandelt PDFs basierend auf PDFtoImage in Bilder um
Nächster:ERP Kingdee Cloud Starry Sky (1) Einfaches Verständnis
 Vermieter| Veröffentlicht am 06.07.2024 16:59:46 |
.NET/C# implementiert DLL-Plugin-Hot-Updates basierend auf AssemblyLoadContext
https://www.itsvse.com/thread-10783-1-1.html
 Vermieter| Veröffentlicht am 24.07.2024 17:25:55 |
 Vermieter| Veröffentlicht am 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\ 区别



Referenzassemblierungen (Typinformationen und Metadaten, ohne spezifische Implementierungen!) ):C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\8.0.11\ref\net8.0
Laufzeitbibliothek (spezifische Implementierung): C:\Program Files\dotnet\shared\Microsoft.NETCore.App\8.0.11\



 Vermieter| Veröffentlicht am 03.12.2024 10:16:03 |
Referenzassemblies und Dokumentation




 Vermieter| Veröffentlicht am 10.12.2024 17:46:00 |
Gleichzeitig kann man eine Symboldatei (.pdb) generieren.
 Vermieter| Veröffentlicht am 10.12.2024 17:49:22 |
Release-Modus konfigurieren
 Vermieter| Veröffentlicht am 30.06.2025 13:40:49 |
Kleine Schlampe Veröffentlicht am 24.07.2024 17:25
https://github.com/roslynpad/roslynpad/releases

LINQPad:https://www.linqpad.net/
Verzichtserklärung:
Alle von Code Farmer Network veröffentlichten Software, Programmiermaterialien oder Artikel dienen ausschließlich Lern- und Forschungszwecken; Die oben genannten Inhalte dürfen nicht für kommerzielle oder illegale Zwecke verwendet werden, andernfalls tragen die Nutzer alle Konsequenzen. Die Informationen auf dieser Seite stammen aus dem Internet, und Urheberrechtsstreitigkeiten haben nichts mit dieser Seite zu tun. Sie müssen die oben genannten Inhalte innerhalb von 24 Stunden nach dem Download vollständig von Ihrem Computer löschen. Wenn Ihnen das Programm gefällt, unterstützen Sie bitte echte Software, kaufen Sie die Registrierung und erhalten Sie bessere echte Dienstleistungen. Falls es eine Verletzung gibt, kontaktieren Sie uns bitte per E-Mail.

Mail To:help@itsvse.com