Невозможно создать AudioEngine с XNA 3.1 или 3.0

Редактировать: я решил свою проблему.

Кажется, у меня та же проблема, что и у этого и этот. За исключением того, что я могу использовать XNA3.0 или 3.1, но ни в одном из них нет Microsoft.Xna.Framework.Xact.dll Вместо них есть Microsoft.Xna.Framework и Microsoft.Xna.Framework.Game .

Я программирую на поверхностной таблице Microsoft и скопировал код из примера, в котором используется XNA 2.0. Я могу нормально запустить код примера, но не могу найти ссылку, которую он использует.

У меня есть ссылка как на Microsoft.Xna.Framework, так и на Microsoft.Xna.Framework.Game, и в коде у меня есть

using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework;

Мой код ломается, когда он пытается создать новый AudioEngine: (потому что, если я его закомментирую, программа запустится)

string filename = System.Windows.Forms.Application.ExecutablePath;
string path = System.IO.Path.GetDirectoryName(filename) + "\\Audio\\";

try
{
audioEngine = new AudioEngine(path + "PianoSounds.xgs");
waveBank = new WaveBank(audioEngine, path + "PianoSounds.xwb");
soundBank = new SoundBank(audioEngine, path + "PianoSounds.xsb");
}

Ошибка, которую я получаю, не очень полезна:

Cannot create instance of 'SurfaceWindow1' defined in assembly 'CoffeeTable1, Version=1.0.4652.32991, Culture=neutral, PublicKeyToken=null'. Exception has been thrown by the target of an invocation.  Error in markup file 'CoffeeTable1;component/SurfaceWindow1.xaml' Line 1 Position 18.

Это файл xaml SurfaceWindow1.xaml, который пытается инициализировать:

<s:SurfaceWindow x:Class="CoffeeTable1.SurfaceWindow1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:s="http://schemas.microsoft.com/surface/2008"
    Title="CoffeeTable1"
    >
  <s:SurfaceWindow.Resources>
    <ImageBrush x:Key="WindowBackground" Stretch="None" Opacity="0.6" ImageSource="pack://application:,,,/Resources/WindowBackground.jpg"/>
  </s:SurfaceWindow.Resources>

  <Grid Background="{StaticResource WindowBackground}" >
        <s:SurfaceButton Content="A" ContactEnter="StartSound" Margin="50,50,0,0" Height="100" Width="100" HorizontalAlignment="Left" VerticalAlignment="Top" Name="A6" ClickMode="Hover" />
    </Grid>
</s:SurfaceWindow>

person Niels    schedule 26.09.2012    source источник
comment
У вас есть ссылка на microsoft.xna.framework.dll в вашем проекте?   -  person Jesse Carter    schedule 26.09.2012
comment
Если у вас есть правильная ссылка на эту .dll, попробуйте добавить в свой код оператор using для Microsoft.Xna.Framework.Audio. Я думаю, что в XNA 4.0 все было перенесено на Xact. Кроме того, если бы мы могли увидеть код, в котором вы пытаетесь создать свой AudioEngine, это могло бы помочь.   -  person Jesse Carter    schedule 26.09.2012
comment
Тогда нам нужна соответствующая информация об ошибке/выводе. Не похоже, что проблема имеет какое-либо отношение к отсутствующей ссылке, если вы можете ее создать, и она не жалуется на то, как вы объявили новый AudioEngine. Если бы была проблема с использованием/ссылкой, это даже не позволило бы вам скомпилировать. Насколько мы знаем, его ошибка вызвана тем, что ваш путь неверен, и он не может найти .xgs.   -  person Jesse Carter    schedule 26.09.2012
comment
Я отредактировал вопрос, чтобы дать дополнительную информацию. Да, у меня есть оператор использования. А код напрямую скопирован из примера. Я также скопировал файлы и добавил их в проект. Если я закомментирую строку, создающую аудиодвижок, программа запустится.   -  person Niels    schedule 26.09.2012
comment
У вас есть соответствующий блок catch для обработки исключений? Поставьте там точку останова и посмотрите, сможете ли вы получить сообщение InnerException или любую информацию о том, что ломается, когда вы пытаетесь создать свой AudioEngine. Кроме того, похоже, у вас есть ошибка, исходящая от xaml. Можешь и это опубликовать?   -  person Jesse Carter    schedule 26.09.2012
comment
Вы случайно не изменили имя файла xaml?   -  person Jesse Carter    schedule 26.09.2012
comment
Насколько я вижу, имя по-прежнему правильное (и я его не менял). Отладчик никогда не достигает блоков catch, поэтому я не могу получить более подробную информацию об ошибках.   -  person Niels    schedule 26.09.2012
comment
Проблема не связана напрямую с вашим кодом C#, что-то происходит с вашим xaml. Тот факт, что вы не можете добраться до блока захвата и выдает ошибку, является доказательством этого.   -  person Jesse Carter    schedule 26.09.2012
comment
давайте продолжим это обсуждение в чате   -  person Niels    schedule 26.09.2012
comment
Я решил ошибку, написав полный путь к файлам. Я не понимаю, почему он не попал в блок catch. Спасибо за вашу помощь и терпение!   -  person Niels    schedule 26.09.2012
comment
Нет проблем, чувак, рад, что ты разобрался!   -  person Jesse Carter    schedule 26.09.2012