LoaderException при вызове генерации кода на основе CodeDom изнутри IronPython


У меня есть фрагмент кода, который использует CodeDom для генерации кода на лету. Это прямо вперед:

  • CodeCompileUnit создается и заполняется типом.
  • блок передается в CSharpCodeProvider.CompileAssemblyFromDom.
  • сборка генерируется в памяти и все упаковывается в один статический метод, который возвращает экземпляр сгенерированного типа.

Если я вызываю этот статический метод из C#, все работает нормально, но он терпит неудачу, если я вызываю метод из IronPython. Есть нет ошибок компиляции и CompiledAssembly возвращенного CompilerResults не равно null. Но если я вызываю GetTypes для сборки, я получаю ReflectionTypeLoadException, который говорит мне посмотреть на LoaderExceptions. Это один из FileNotfoundException, дающий следующее сообщение:

Не удалось загрузить файл или сборку ' PosData, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' или одна из его зависимостей. То система не может найти указанный файл.": "PosData, Version=1.0.0.0, Культура=нейтральная, PublicKeyToken=null

PosData это моя собственная сборка, которая содержит материал для генерации кода и которая уже загружена IronPython. Все находится в одной папке, поэтому я не вижу, что может отсутствовать.

Любой намек будет очень признателен!

1 2

1 ответ:

Вы можете дать Просмотрщику журнала Fusion шанс получить дополнительную информацию о том, что происходит.

Смотрите запись в блоге Скотта Ханселмана иэту страницу на MSDN для получения подробной информации о том, как ее использовать.