Situation
这可能是一个非常简单的问题,有一个非常简单的答案,但我在任何地方都找不到答案,所以我在这里问,我一直在努力解决这个问题,因为这对我来说不是什么大问题,但当我提交我的工作时,我会这样做的。
问题
我有一个声音播放器,它在我的电脑上工作的很好,并做我希望它在这台电脑上做的事情。
SoundPlayer player = new SoundPlayer(@"C:\Users\Font\Desktop\GRADED_UNIT_SOLUTION_PLANNING_UPDATED\HillRacingGraded\HillRacingGraded\Resources\Audio\" + track + ".wav");问题在于这条路。
因为有了这条路,我的程序就不会在任何其他系统上工作,除了它现在正在运行的系统。它在启动后不久就崩溃了。
然后..。正如您可能从路径中看到的,它最终会被分级,所以我的讲师将需要使用这个程序而不必切换目录。
如何让Soundplayer路径从"HillRacingGraded\ ...\ .“开始?
而不是从C:驱动器开始。
发布于 2015-05-11 02:10:07
如果您使用的是System.Media.SoundPlayer,它支持从流中读取声音文件,而且我在过去已经从嵌入式资源获得的UnmanagedResourceStream中成功地使用了它。因此,一种选择是将您的声音文件作为资源嵌入到您的应用程序中,然后从那里播放。
如果嵌入文件不是选项,则可以使用类似于下面所示的代码获取相对于可执行文件夹的路径。然后,您只需在子目录中提供您的可执行文件和资源文件(但是如果您的代码可能位于DLL中,并且可以由任意可执行文件承载,请小心使用GetExecutingAssembly() )。
var assembly = Assembly.GetExecutingAssembly();
var folder = Path.GetDirectoryName(assembly.Location);
var soundFile = Path.Combine(folder, "MySoundFile.wav");特殊文件夹路径帮助程序也可以减少硬编码,但是当您的应用程序通过安装程序安装时,您可以自动将文件放在适当的位置(这在学校项目中不太可能)。
发布于 2022-10-20 18:40:00
对我来说(VS 2022,.net 6,C# 10)它起了作用:
https://stackoverflow.com/questions/30158423
复制相似问题