发布带有声音文件的WPF/.NET应用程序

klr1opcd  于 2023-10-22  发布在  .NET
关注(0)|答案(1)|浏览(141)

我正在做一个WPF(.Net Core 6)项目,我发布为自包含单个文件,因此我得到一个可运行的可执行文件(.exe)作为我发布的应用程序。WPF应用程序将在按键事件上播放声音(.wav文件)。这在VS2022调试模式下工作,因为声音文件位于文件夹/Resources/SoundFile.wav中的.Net项目中。
但是,由于声音文件的路径不正确,应用程序在运行已发布的可执行文件时崩溃。从自包含单个文件可执行文件运行时,如何配置声音文件的正确相对路径?
这就是代码现在的样子:

PlaySoundFile(GetSoundFilePath("../../../Resources/SoundFile.wav"));
private void PlaySoundFile(string soundPath)
        {
            SoundPlayer soundPlayer = new SoundPlayer(GetSoundFilePath(soundPath));
            soundPlayer.Load();
            soundPlayer.Play();
        }

        private string GetSoundFilePath(string soundPath)
        {
            Assembly? assembly = Assembly.GetEntryAssembly();
            string? baseDir = Path.GetDirectoryName(assembly.Location);
            return new DirectoryInfo(Path.Combine(baseDir, soundPath)).FullName;
        }

我试着找到运行可执行文件时声音文件的路径,因为我相信它可能是在运行时创建的一些Temp文件夹,一旦WPF应用程序关闭就被删除。但目前还没有成功。

flvlnr44

flvlnr441#

考虑不传递路径,而是传递数据的流,然后您可以将其加载到内存中并从那里进行流处理,或者以流的形式获取资源。把它变成一种嵌入式资源。

相关问题