Требования: Проект должен генерировать разные алгоритмы и логику в соответствии с потребностями заказчика, на данный момент код может не быть записан мёртвым, и для выполнения кастомизированной логики может потребоваться какой-то движок правил.
.NET Compiler Platform, кодовое название Roslyn, представляет собой набор API компиляторов и анализа кода с открытым исходным кодом Microsoft для языков C# и Visual Basic (VB.NET).
Обзор:
Сначала создайте новое консольное приложение со следующей ссылкой:
Код таков:
Мы компилируем код на 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-файл со следующей конфигурацией:
Повторите команду и обнаружите, что её можно выполнить нормально, как показано на следующем рисунке:
Ссылка:
Вход по гиперссылке виден.
Вход по гиперссылке виден.
Вход по гиперссылке виден.
|