2013-02-24 5 views
0

Я пишу программу для воспроизведения аудио из папки «Ресурсы», расположенной в том же каталоге, что и мое приложение (поэтому его можно переместить на другой компьютер) с помощью компонента проигрывателя Windows Media.WMP.Url Относительный путь

Мой текущий код для выбора звукового клипа:

soundPlayer.URL = @"C:\Users\Ryan\Desktop\MyProgram\SFX\nameThatTune.mp3"; 

Который работает отлично, но когда я изменить его на:

soundPlayer.URL = @"SFX\showIntro.mp3"; 

Он перестает работать. Я также попытался начать путь к файлу с помощью ~/и ../, но не работает. Является ли это проблемой, специфичной для WMP-компонента, или мне не хватает более серьезной проблемы?

+0

Если он находится в текущей папке, попробуйте префикс '. /'. Я также могу зависеть от того, где находится исполняемый файл. –

+0

Никогда не ставьте свои проекты на свой рабочий стол! Будьте аккуратны и создайте конкретные папки для своих категорий файлов и документов! :-) –

+0

На самом деле у меня их немного более организованный, но я переместил его, чтобы сократить путь ради создания сообщения. Я отлаживаю его на данный момент, но будет ли код изменяться после публикации его в исполняемом файле? – Ryan

ответ

1

Относительные пути зависят от значения Environment.CurrentDirectory. Когда вы запускаете приложение внутри Visual Studio, текущий каталог указывает на корневую папку вашего проекта (а не на путь выполнения приложения). Также некоторые операции могут изменить текущий каталог (открытие файла с помощью OpenFileDialog). Вы не всегда можете полагаться на текущий каталог, чтобы быть конкретным местом, поэтому вы должны стараться использовать абсолютный путь.

Если файл находится в папке приложений (около .exe файла), вы можете использовать:

soundPlayer.URL = Path.Combine(
    Path.GetDirectoryName(Assembly.GetEntryAssembly().Location), 
    "showIntro.mp3"); 

или если вы находитесь на WinForms:

soundPlayer.URL = Path.Combine(
    Path.GetDirectoryName(Application.ExecutablePath), 
    "showIntro.mp3"); 

Изменение его, чтобы указать подлодка также проста.

Обратите внимание, что файл должен находиться в выходной папке вашего проекта (например, bin\Debug).

+0

К сожалению, я получаю сообщение об ошибке (например, красное подчеркивание), когда я пытаюсь использовать Path и Assembly. Любая идея почему? – Ryan

+0

@ Ryan Да, у меня есть (идеи)! Вы должны добавить соответствующие операторы 'using' в свой файл кода. Нажмите на слово с красной линией под ним (например, «Путь»), затем вы увидите маленький синий квадрат под словом. Нажмите «Ctrl +.» (Клавиша управления, а затем точка). Затем выберите первый элемент в меню (например, используя System.IO). Вы также можете сделать это с помощью мыши. Таким образом VisualStudio автоматически добавляет требуемый оператор 'using'. –

+0

Хорошо, я сделал это, и линия ушла, однако она все еще не играет. Я пробовал модифицировать путь к файлу «SFX \ nameThatTune.mp3» и «SFX/nameThatTune.mp3», но не avial. Любые другие идеи, почему это не работает? Благодаря!! – Ryan

Смежные вопросы