c# 在构建中有声音文件
Posted
技术标签:
【中文标题】c# 在构建中有声音文件【英文标题】:c# have sound files in build 【发布时间】:2017-10-11 14:27:21 【问题描述】:我需要为学校制作游戏。
我正在添加一些音效和音乐。
我在类中有指向 .wav 的路径,它会播放它们,但只有当我从项目中的 bin 地图开始游戏时。我发现这些文件不包含在构建之外。我开始寻找它,但找不到正确的方法。
我有:
MediaPlayer _musicPlayer = new MediaPlayer();
string s = System.IO.Packaging.PackUriHelper.UriSchemePack;
Uri uri = new Uri(@"pack://application:,,,/Assembly name;component/Resources/Sounds/Music/Main_theme_-_Thiago_Adamo.wav")
_musicPlayer.Open(uri);
_musicPlayer.Play();
但这不起作用。如果我添加一个消息框:
uri.IsFile.ToString()
显示为假。
在文件上我将属性设置为:
构建操作:资源
复制到输出目录:总是复制
我希望有人可以帮助我。
【问题讨论】:
你用s
做什么?
我需要这样做才能使用“pack://.....” 发现在互联网上其他人也有同样的问题。
除了基本的 winforms 应用程序之外,您还在做其他事情吗?是 UWP 还是类似的东西?
您是否尝试将“构建操作”设置为资源 - 您不需要复制文件,因为它将包含在应用程序中(至少在 WPF 中)。
它是一个 Windows Forms 应用程序(visual studio -> 新项目 -> 'Windows Forms App (.NET Framework))
【参考方案1】:
在 Visual Studio 的解决方案中将文件添加到项目中,以便它们显示在解决方案资源管理器中(默认停靠在 VS 窗口的右侧)。单击一个文件,您会看到该文件的属性窗口(默认显示在 VS 中的解决方案资源管理器下方)。确保Copy to Output Directory
属性设置为Copy Always
或Copy if newer
,并且Build Action
设置为Content
。为您需要的每个声音文件执行此操作。
此时,当您构建应用程序时,文件将被复制到与您的应用程序相同的文件夹中。 它们不会被打包。它们只会出现在您的程序旁边的文件系统中。如果您在调试模式下构建应用程序,则它位于项目的 /bin/Debug 文件夹(默认情况下)中。如果是 Release 模式,则为 /bin/Release 文件夹,但只要您的工作目录与您的应用程序匹配,您就可以在 Uri 中仅通过文件名引用它们(否则您需要 check the application path 并构建完整路径文件)。
您需要Content
而不是Resource
的原因在于Remarks section of the MediaPlayer
class documentation:
使用您的应用程序分发媒体时,您不能将媒体文件用作项目资源。在您的项目文件中,您必须改为将媒体类型设置为 Content 并将 CopyToOutputDirectory 设置为 PreserveNewest 或 Always。
【讨论】:
这是奇怪的部分。它不会将其复制到该文件夹。如果是这样就足够了。 它现在复制它。但仍然不是正确的道路。我是否需要在路径的其余部分前面放置“组件” 我现在希望 URI 只是您的 wav 文件的路径。请参阅:***.com/questions/22745278/how-to-play-a-sound-file以上是关于c# 在构建中有声音文件的主要内容,如果未能解决你的问题,请参考以下文章
C# WINFROM怎么播放声音文件? 我把声音文件放在BIN目录下 结果报错说啥找不到文件