C # 5 AsyncCtp BadImageFormatException

Пожалуйста, помогите мне с этим, я писал консольное приложение, используя AsyncCtpLibrary и компилятор C # 5 ctp. В первый раз, когда мне пришлось запустить ожидающий код, я получил следующее:

System.BadImageFormatException was unhandled
  Message=An attempt was made to load a program with an incorrect format. (Exception from HRESULT: 0x8007000B)
  Source=AsyncCtpLibrary
  StackTrace:
    Server stack trace: 
       at [...].<Execute>d__1c.MoveNext()
       at [...].Execute()
       at [...].<Move>d__1d.MoveNext() in[..]:line 266
    Exception rethrown at [0]: 
       at System.Runtime.CompilerServices.AsyncVoidMethodBuilder.<SetException>b__1(Object state)
       at System.Threading.QueueUserWorkItemCallback.WaitCallback_Context(Object state)
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
       at System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem()
       at System.Threading.ThreadPoolWorkQueue.Dispatch()
       at System.Threading._ThreadPoolWaitCallback.PerformWaitCallback()
  InnerException: 

Не хватает ли мне DLL, на которую нужно ссылаться?

важные новые вещи
Мой метод ошибки выглядит так:

public async override Task<bool> Execute()
{
    //do stuff
    await stuff;
    //do other stuff
    await base.Execute()
    //do other stuff
    return true;
}

Я последовал совету Джона Скита, пытаясь понемногу воссоздать ошибку, и теперь я могу сказать, что строка await base.Execute () - убийца! Если я закомментирую эту строку, все будет работать, если я оставлю ее, вызов моего метода НЕМЕДЛЕННО завершается с ошибкой (не при достижении base.Execute ()). Итак, я предполагаю, что компилятор ctp делает что-то странное. Почему? Чего я никогда не должен делать? Насколько велика ошибка?

старые вещи:

РЕДАКТИРОВАТЬ:
Что касается 32-битной / 64-битной проблемы, моя система 32-битная (внутри виртуальной машины, заметьте), и, насколько мне известно, AsyncCtpLibrary.dll не содержит неуправляемого кода. Все мои проекты (библиотеки классов и одно консольное приложение) имеют такие вкладки сборки, как это: screenshot
Что может быть все еще неправильным?


РЕДАКТИРОВАТЬ: Я также проверил программу просмотра Fusion log , библиотека AsyncCtpLibrary загружается без ошибок:

*** Assembly Binder Log Entry  (6/10/2011 @ 9:04:11 PM) ***    
The operation was successful.    
Bind result: hr = 0x0. The operation completed successfully.     
Assembly manager loaded from:  C:\Windows\Microsoft.NET\Framework\v4.0.30319\clr.dll    
Running under executable  C:\Users\Daver\Documents\Visual Studio 2010\Projects\[...]\bin\Debug\MyApp.exe

--- A detailed error log follows. 

=== Pre-bind state information ===    
LOG: User = WIN-N74LV38NLV3\Daver    
LOG: DisplayName = AsyncCtpLibrary, Version=1.0.4107.18181, Culture=neutral, PublicKeyToken=31bf3856ad364e35    
 (Fully-specified)    
LOG: Appbase = file:///C:/Users/Daver/Documents/Visual Studio 2010/Projects/[...]/bin/Debug/

LOG: Initial PrivatePath = NULL    
LOG: Dynamic Base = NULL    
LOG: Cache Base = NULL    
LOG: AppName = MyApp.exe    
Calling assembly : MyLibrary, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null.
===

LOG: This bind starts in default load context.    
LOG: Using application configuration file: C:\Users\Daver\Documents\Visual Studio 2010\Projects\[...]\bin\Debug\MyApp.exe.Config    
LOG: Using host configuration file:     
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config.    
LOG: Post-policy reference: AsyncCtpLibrary, Version=1.0.4107.18181, Culture=neutral, PublicKeyToken=31bf3856ad364e35    
LOG: GAC Lookup was unsuccessful.    
LOG: Attempting download of new URL file:///C:/Users/Daver/Documents/Visual Studio 2010/Projects/[...]/bin/Debug/AsyncCtpLibrary.DLL.    
LOG: Assembly download was successful. Attempting setup of file: C:\Users\Daver\Documents\Visual Studio 2010\Projects\[...]\bin\Debug\AsyncCtpLibrary.dll    
LOG: Entering run-from-source setup phase.    
LOG: Assembly Name is: AsyncCtpLibrary, Version=1.0.4107.18181, Culture=neutral, PublicKeyToken=31bf3856ad364e35    
LOG: Binding succeeds. Returns assembly from C:\Users\Daver\Documents\Visual Studio 2010\Projects\[...]\bin\Debug\AsyncCtpLibrary.dll.    
LOG: Assembly is loaded in default load context.

Я также проверил код IL компилятора d__1c -generated class 'MoveNext (), и единственными сборками, на которые он ссылается ([assemblyName]), являются mscorlib, System.Core и AsyncCtpLibrary.


Я проверил манифест как моей dll, так и AsyncCtpLibrary, мой сказал .corflags 0x00000003 // ТРЕБУЕТСЯ ТОЛЬКО 32 БИТА , AsyncCtpLibrary сказал .corflags 0x00000009 // ТОЛЬКО , я не уверен, может ли это быть проблемой.

Пожалуйста, помогите, я ' м без идей!

5
задан TDaver 11 June 2011 в 09:03
поделиться