SoundPlayer 问题

Issue with SoundPlayer

情况

这可能是一个非常简单的问题和一个非常简单的答案,但我无法在任何地方找到答案,所以我要在这里问,我一直在解决这个问题,因为它不是对我来说是个大问题,但它会在我提交作业时出现。

问题

我有一个声音播放器,它在我的 PC 上运行良好,并且完全符合我希望它在这台 PC 上执行的操作。

SoundPlayer player = new SoundPlayer(@"C:\Users\Font\Desktop\GRADED_UNIT_SOLUTION_PLANNING_UPDATED\HillRacingGraded\HillRacingGraded\Resources\Audio\" + track + ".wav");

路径问题

因为这个路径,我的程序不能在任何其他系统上运行,除了它现在正在运行的系统。刚启动就闪退

而且..正如您可能从路径中看到的那样,它最终会被评分,所以我的讲师将需要使用这个程序而无需切换目录。

如何让 Soundplayer 路径从 "HillRacingGraded\ ...\ ..." 开始?

而不是从 C: 驱动器开始。

如果您正在使用 System.Media.SoundPlayer,它支持从流中读取声音文件,并且我已经看到它在过去从您从嵌入式资源获得的 UnmanagedResourceStream 中成功使用。因此,一种选择是将您的声音文件作为资源嵌入到您的应用程序中并从那里播放。

如果嵌入文件不是一个选项,您可以使用类似于下面所示的代码获取相对于您的可执行文件夹的路径。然后您只需在子目录中提供可执行文件和资源文件(但如果您的代码有可能位于 DLL 中并且可以由任意可执行文件托管,请小心使用 GetExecutingAssembly())。

var assembly = Assembly.GetExecutingAssembly();
var folder = Path.GetDirectoryName(assembly.Location);
var soundFile = Path.Combine(folder, "MySoundFile.wav");

special folder 路径助手也可以减少硬编码,但当您的应用程序将通过安装程序安装并且您可以自动将文件放在适当的位置时效果最好(这不太可能是学校项目的案例)。