Открытый сгенерированный сборочный код кажется пустым в Reflector, если это не так. - PullRequest
5 голосов
/ 19 октября 2010

Я генерирую динамическую сборку, используя Reflection.Emit, которая включает в себя один класс.У меня есть ошибка, которая вызывает исключение BadImageException.Чтобы решить эту проблему, мне нужно увидеть скомпилированный код, и поэтому я сохраняю динамическую сборку на диск.

Я уже пробовал PEVerify для сборки, которая, кажется, считает, что ошибок нет.Теперь я хочу просмотреть сгенерированный код в Reflector, но сборка выглядит как пустая (что я знаю, это не так).

Есть идеи, почему это происходит?Я уже использую плагин Relection.Emit для отражателя, который не помогает с этой проблемой.

1 Ответ

13 голосов
/ 19 октября 2010

Заменить:

var moduleBuilder = assemblyBuilder.DefineDynamicModule(assemblyName.Name);

С:

var moduleBuilder = assemblyBuilder.DefineDynamicModule(assemblyName.Name, "yourfilename.dll");

Затем найдите его в текущем каталоге, возможно, в папке bin. Сборки и модули технически являются двумя отдельными объектами, и вы сохраняете только информацию о сборке, а не информацию о модуле (где живет весь ваш код). (Также, конечно, не называйте их одинаковыми именами.)

...