Демонстрации NAudio больше не работают

Я только что попытался запустить демоверсии NAudio и получил странную ошибку:

System.BadImageFormatException: Could not load file or a
ssembly 'NAudio, Version=1.3.8.0, Culture=neutral, PublicKeyToken=null' or one o
f its dependencies. An attempt was made to load a program with an incorrect form
at.
File name: 'NAudio, Version=1.3.8.0, Culture=neutral, PublicKeyToken=null'
   at NAudioWpfDemo.AudioGraph..ctor()
   at NAudioWpfDemo.ControlPanelViewModel..ctor(IWaveFormRenderer waveFormRender
er, SpectrumAnalyser analyzer) in C:\Users\Admin\Downloads\NAudio-1.3\NAudio-1-3
\Source Code\NAudioWpfDemo\ControlPanelViewModel.cs:line 23
   at NAudioWpfDemo.MainWindow..ctor() in C:\Users\Admin\Downloads\NAudio-1.3\NA
udio-1-3\Source Code\NAudioWpfDemo\MainWindow.xaml.cs:line 15

WRN: Assembly binding logging is turned OFF.
To enable assembly bind failure logging, set the registry value [HKLM\Software\M
icrosoft\Fusion!EnableLog] (DWORD) to 1.
Note: There is some performance penalty associated with assembly bind failure lo
gging.
To turn this feature off, remove the registry value [HKLM\Software\Microsoft\Fus
ion!EnableLog].

С тех пор, как я в последний раз использовал демоверсии NAudio, я перешел с 32-битной Windows XP на 64-битную Windows 7. Может ли это вызвать эту проблему? Это очень раздражает, так как я собирался снова попробовать свои силы в аудио на С#.


person Kurru    schedule 09.05.2010    source источник


Ответы (2)


У меня нет опыта работы с NAudio, но упомянутое вами исключение чаще всего возникает, когда возникает проблема с разрядностью. Это означает, что NAudio, возможно, скомпилирован только для 32-битной версии, а вы используете 64-битную.

Чтобы попытаться исправить это, в свойствах компиляции для вашего проекта установите вывод на 32-битный (x86).

person driis    schedule 09.05.2010
comment
это исправило это, спасибо :) [отметьте правильный ответ Дриису, потому что, по-видимому, его ответ «старше» или первый :) - person Kurru; 10.05.2010

Ваша программа пытается загрузить 32-битную DLL в 64-битный процесс (или наоборот). В Windows 32-разрядная программа может загружать только 32-разрядную DLL, а 64-разрядная программа может загружать только 64-разрядную DLL.

Ваша программа, вероятно, нацелена на AnyCPU в качестве платформы, поэтому компилятор выдает IL, который во время выполнения становится 32- или 64-битным процессом в зависимости от вашей платформы. Используемая вами DLL (NAudio), вероятно, создана только для платформы x86.

В свойствах проекта попробуйте установить платформу x86.

person Chris Schmich    schedule 09.05.2010