Тази статия е огледална статия за машинен превод, моля, кликнете тук, за да преминете към оригиналната статия.

Изглед: 3803|Отговор: 7

[Бакшиши] Използвайте Roslyn за динамично компилиране на C# код и стартиране

[Копирай линк]
Публикувано в 6.07.2024 г. 16:59:03 ч. | | | |
Изисквания: Проектът трябва да генерира различни алгоритми и логика според нуждите на клиента, в този момент кодът може да не е записан мъртъв и може да се наложи някакъв двигател за изпълнение на персонализираната логика.

.NET Compiler Platform, с кодово име Roslyn, е набор от open source компилатори и API за анализ на код на Microsoft за езиците C# и Visual Basic (VB.NET).

Преглед:

Разликата между компилатора Roslyn MSBuild
https://www.itsvse.com/thread-9596-1-1.html

.NET/C# Roslyn компилаторна платформа
https://www.itsvse.com/thread-10740-1-1.html
Първо, създайте ново конзолно приложение със следния референт:

Кодът е следният:



Компилираме C# кода, за да получим само test.exe размер на файла3KB。 Полученият файл test.exe не може да се стартира като изпълним файл за Windows и грешката се докладва по следния начин:

Необработено изключение: System.IO.FileNotFoundException: Не успя да зареди файл или асемблер "System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e" или някоя от неговите зависимости. Системата не може да намери посочения файл.
Затова изпълнете конзолното приложение със следните команди:

След изпълнение грешката се докладва по следния начин:

Възникна фатална грешка. Библиотеката 'hostpolicy.dll', необходима за изпълнение на приложението, не беше намерена в 'D:\Project\ConsoleApp1\ConsoleApp1\bin\Debug\net8.0\'.
Не успя да работи като самостоятелно приложение.
  - Приложението беше стартирано като самостоятелно приложение, тъй като 'D:\Project\ConsoleApp1\ConsoleApp1\bin\Debug\net8.0\test.runtimeconfig.json' не беше намерено.
  - Ако това трябва да е приложение, зависимо от framework, добавете файла 'D:\Project\ConsoleApp1\ConsoleApp1\bin\Debug\net8.0\test.runtimeconfig.json' и посочете подходящата рамка.
Грубо казано, трябва да имате *.runtimeconfig.json файл, който съдържа информация за изпълнение и използваната версия на .NET Core, референт:Входът към хиперлинк е видим.

Затова създайте нов test.runtimeconfig.json файл със следната конфигурация:

Изпълнете командата отново и установете, че тя може да се изпълни нормално, както е показано на следващата фигура:



Препратка:

Входът към хиперлинк е видим.
Входът към хиперлинк е видим.
Входът към хиперлинк е видим.





Предишен:.NET/C# конвертира PDF файлове в изображения на база PDFtoImage
Следващ:ERP Kingdee Cloud Starry Sky (1) Просто разбиране
 Хазяин| Публикувано в 6.07.2024 г. 16:59:46 ч. |
.NET/C# реализира горещи ъпдейти на DLL плъгина въз основа на AssemblyLoadContext
https://www.itsvse.com/thread-10783-1-1.html
 Хазяин| Публикувано в 24.07.2024 г. 17:25:55 ч. |
 Хазяин| Публикувано в 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\ 区别



Референтни сборки (информация за типове и метаданни, без да се включват конкретни имплементации!) ):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\



 Хазяин| Публикувано в 3.12.2024 г. 10:16:03 ч. |
Референтни сборки и документация




 Хазяин| Публикувано в 10.12.2024 г. 17:46:00 ч. |
В същото време можете да генерирате файл със символи (.pdb)
 Хазяин| Публикувано в 10.12.2024 г. 17:49:22 ч. |
Конфигуриране на режима на освобождаване
 Хазяин| Публикувано в 30.06.2025 г. 13:40:49 ч. |
Отричане:
Целият софтуер, програмни материали или статии, публикувани от Code Farmer Network, са само за учебни и изследователски цели; Горното съдържание не трябва да се използва за търговски или незаконни цели, в противен случай потребителите ще понесат всички последствия. Информацията на този сайт идва от интернет, а споровете за авторски права нямат нищо общо с този сайт. Трябва напълно да изтриете горното съдържание от компютъра си в рамките на 24 часа след изтеглянето. Ако ви харесва програмата, моля, подкрепете оригинален софтуер, купете регистрация и получете по-добри услуги. Ако има нарушение, моля, свържете се с нас по имейл.

Mail To:help@itsvse.com