我正在做一个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应用程序关闭就被删除。但目前还没有成功。
1条答案
按热度按时间flvlnr441#
考虑不传递路径,而是传递数据的流,然后您可以将其加载到内存中并从那里进行流处理,或者以流的形式获取资源。把它变成一种嵌入式资源。