Я создаю динамическую сборку, используя Reflection.Emit, которая включает в себя один класс. У меня есть ошибка, которая вызывает исключение BadImageException. Чтобы решить эту проблему, мне нужно увидеть скомпилированный код, и поэтому я сохраняю динамическую сборку на диск.Открытый код сгенерированный сгенерированный код пуст в Reflector, если он отсутствует.
Я уже пробовал PEVerify против сборки, которая кажется, что ошибок нет. Теперь я хочу просмотреть сгенерированный код в Reflector, но сборка выглядит пустой (что я знаю, что это не так).
Любая идея, почему это происходит?
var assemblyName = new AssemblyName("An.Assembly");
var appDomain = Thread.GetDomain();
var assemblyBuilder = appDomain.DefineDynamicAssembly(assemblyName, AssemblyBuilderAccess.RunAndSave);
var moduleBuilder = assemblyBuilder.DefineDynamicModule(assemblyName.Name);
var typeBuilder = moduleBuilder.DefineType("MyClass", TypeAttributes.Public | TypeAttributes.Class);
...
typeBuilder.CreateType();
assemblyBuilder.Save("temp.dll");
Кстати, я уже использую Relection.Emit
плагин для отражателя, который не поможет с этим вопросом.
BadImageFormatException? Это странно. Оптимизируйте исключение лучше, сообщение + трассировка стека. –
Пуста, если вы посмотрите на нее с ildasm как тоже? –
Нет, это исключение BadImage, вызванное некоторой ошибкой при испускании кода IL. Даже если я верну свой код, чтобы он не выдавал исключение, я все еще не могу просмотреть испущенный код в Reflector. – TheCodeKing