Эта статья является зеркальной статьёй машинного перевода, пожалуйста, нажмите здесь, чтобы перейти к оригиналу.

Вид: 3803|Ответ: 7

[Чаевые] Используйте Roslyn для динамической компиляции кода на C# и запускайте его

[Скопировать ссылку]
Опубликовано 06.07.2024 16:59:03 | | | |
Требования: Проект должен генерировать разные алгоритмы и логику в соответствии с потребностями заказчика, на данный момент код может не быть записан мёртвым, и для выполнения кастомизированной логики может потребоваться какой-то движок правил.

.NET Compiler Platform, кодовое название Roslyn, представляет собой набор 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' не был найден.
  - Если это должно быть приложение, зависящее от фреймворка, добавьте файл '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) Простое понимание
 Хозяин| Опубликовано 06.07.2024 16:59:46 |
.NET/C# реализует горячие обновления плагинов DLL на основе AssemblyLoadContext
https://www.itsvse.com/thread-10783-1-1.html
 Хозяин| Опубликовано 24.07.2024 17:25:55 |
 Хозяин| Опубликовано 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\ 区别



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



 Хозяин| Опубликовано 03.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