You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用相对路径替代绝对路径实现跨机器音频播放?

解决SoundPlayer使用相对路径播放音频的问题

针对多人协作开发场景,推荐两种可靠的相对路径实现方式:

方式一:将音频文件设为嵌入资源

这种方式不需要依赖外部文件路径,音频会打包进程序集里,彻底避免路径分歧:

  1. 在Visual Studio中右键音频文件(menuHoover.mp3),选择属性
  2. 将「生成操作」改为嵌入的资源,「复制到输出目录」改为不复制
  3. 用以下代码读取播放:
using System.Reflection;

// 格式:项目命名空间+文件夹层级+文件名,比如你的项目命名空间是MoreProject,路径就是MoreProject.Assets.Sounds.menuHoover.mp3
var resourceStream = Assembly.GetExecutingAssembly().GetManifestResourceStream("YourNamespace.Assets.Sounds.menuHoover.mp3");
if (resourceStream != null)
{
    SoundPlayer soundPlay = new SoundPlayer(resourceStream);
    soundPlay.Play();
}

方式二:将音频文件复制到输出目录

如果需要保留外部文件的可修改性,可以用这种方式,确保所有开发者的输出目录结构一致:

  1. 右键音频文件,选择属性
  2. 将「复制到输出目录」改为始终复制,「生成操作」保持内容
  3. 用程序运行根目录拼接相对路径,避免当前工作目录不一致的问题:
using System.IO;
using System;

// 获取程序运行的根目录
string baseDir = AppDomain.CurrentDomain.BaseDirectory;
// 拼接相对路径
string soundPath = Path.Combine(baseDir, @"Assets\Sounds\menuHoover.mp3");
SoundPlayer soundPlay = new SoundPlayer(soundPath);
soundPlay.Play();

注意事项

  • 不要直接写@"Assets\Sounds\menuHoover.mp3"这种裸相对路径,因为程序的当前工作目录可能不是项目根目录(比如调试时在bin/Debug下,部署时又在其他位置)
  • 确认所有开发者的项目文件结构完全一致,尤其是Assets/Sounds的层级

内容的提问来源于stack exchange,提问作者Filipe Cruz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 13:50:33