Чем заменить CompileAssemblyFromFile, CompileAssemblyFromDom и CompileAssemblyFromSource?
С помощью CodeDom во время выполнения приложения генерирую простой класс с парой свойств и записываю в .cs файл, но использовать этот класс не могу, так как компиляция не поддерживается платформой начиная с.NET Core и выше.
Подробнее: Требуется создать приложение - обработчик логов большого размера (5-10 Гб). Логи в json-формате, каждая json записана в текстовый документ построчно. Набор ключей в каждом лог-файле может быть разный, поэтому требуется динамически создавать модель данных и использовать её для создания временной БД, наполнения и чтения данных. С помощью CodeDom получается успешно генерировать файл .cs формата через парсинг ключей json-файлов, который будет содержать и нужно пространство имён, и нужное название класса, и все необходимые поля. Но использовать эту модель для чего-либо не получается из-за ограничений платформы.
Была мысль вызывать командную строку или терминал в зависимости от операционной системы, на которой запущено приложение, и через неё запускать команду dotnet и компилировать библиотеку, а потом на лету подключать к работающему приложению и вытягивать нужную модель через reflection, но, мне кажется, должен способ проще и лаконичнее. К сожалению, других способов не вижу. Прошу помощи по следующим вопросам:
- Можно ли создать экземпляр класса, созданного через CodeDom, в .NET Core или .NET 5+ (требуется кроссплатформенность)?
- Можно ли использовать автоматически сгенерированный класс, записанный в .cs файл, в запущенном приложении? Использовать = создать экземпляр и обращаться к свойствам.
- Можно ли скомпилировать библиотеку в кроссплатформенной среде через запущенное приложение? Какие есть варианты?
- Какие ещё есть варианты динамического построения модели в работающем приложении для полноценного использования с EntityFramework?