У меня есть фрагмент кода, который использует CodeDom для генерации кода «на лету». Это прямолинейно:LoaderException при вызове генерации кода на основе CodeDom изнутри IronPython
CodeCompileUnit
созданный и заполненный типом.- Устройство передано
CSharpCodeProvider.CompileAssemblyFromDom
. - Сборка создается в памяти, и все обернуто внутри одного статического метода, который возвращает экземпляр сгенерированного типа.
Если я вызываю этот статический метод из C#, все работает нормально, но это не удается, если я вызываю метод из IronPython. Ошибок компиляции нет, а CompiledAssembly
из возвращаемого CompilerResults
не имеет значения. Но если я назову GetTypes
для сборки, я получаю ReflectionTypeLoadException
, который говорит мне посмотреть на LoaderExceptions. Это одна является FileNotfoundException
дает следующее сообщение:
Не удалось загрузить файл или сборку «PosData, Version = 1.0.0.0, Culture = нейтрален, PublicKeyToken = нуль» или один из его зависимостей. Система не может найти указанный файл. «:» PosData, Version = 1.0.0.0, Culture = нейтрален, PublicKeyToken = нуль
PosData мой собственный узел, который содержит материал генерации кода и который уже загружен от IronPython. Все находится в одной папке, поэтому я не вижу, чего не хватает.
Любой намек был бы очень признателен!
Это трудно исследовать без проекта, который воспроизводит проблему. Вы можете, например, сравнить IL, сгенерированный с вашего кода C# и IronPyton, чтобы узнать, есть ли различия. –
У меня также было FileNotfoundException в GetTypes до того, как сборка уже была загружена. Проблема заключалась в том, что сборка, на которую ссылается загруженная сборка, не найдена. –
Вы должны обязательно опубликовать некоторый код IronPython. –