我正在使用包含一個類的Reflection.Emit生成動態程序集。我有一個導致BadImageException的錯誤。爲了解決這個問題,我需要看到已編譯的代碼,因此我將動態程序集保存到磁盤。當Reflector沒有時,Open Emitted程序集生成代碼在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?這是奇怪的。更好地記錄異常,消息+堆棧跟蹤。 – 2010-10-18 20:10:46
當你用ildasm來看它時,它是否爲空? – 2010-10-18 20:12:16
不是它的BadImageException是由IL代碼的發射中的一些錯誤引起的。即使我恢復我的代碼,以便它不拋出異常,我仍然無法查看反射器中的發射代碼。 – TheCodeKing 2010-10-18 20:17:10