C# 在构建中有声音文件

Bar*_*man 0 c# uri build pack-uri

我需要为学校制作一款游戏。

我添加了一些音效和音乐。

我在类中有 .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();
Run Code Online (Sandbox Code Playgroud)

然而这不起作用。如果我添加一个消息框:

uri.IsFile.ToString()
Run Code Online (Sandbox Code Playgroud)

显示为假。

在文件上我将属性设置为:

构建操作:资源

复制到输出目录:始终复制

我希望有一个人可以帮助我。

Joe*_*orn 6

将文件添加到 Visual Studio 解决方案中的项目中,以便它们显示在解决方案资源管理器中(默认情况下停靠在 VS 窗口的右侧)。单击一个文件,您将看到该文件的属性窗口(默认显示在 VS 中的解决方案资源管理器下方)。确保该Copy to Output Directory属性设置为 或Copy Always,Copy if newer并且Build Action设置为Content。对您需要的每个声音文件执行此操作。

此时,在构建应用程序时,这些文件将被复制到与应用程序相同的文件夹中。它们不会被包装。它们将位于文件系统中您的程序旁边。如果您在调试模式下构建应用程序,则该文件位于项目的 /bin/Debug 文件夹(默认情况下)中。如果是 Release 模式,则为 /bin/Release 文件夹,但只要您的工作目录与您的应用程序匹配,您就可以仅通过文件名在 Uri 中引用它们(否则您需要检查应用程序路径并构建完整路径到文件)。

Content您需要而不是的原因Resource在类文档的备注部分MediaPlayer:

使用应用程序分发媒体时,不能将媒体文件用作项目资源。在项目文件中,您必须将媒体类型设置为 Content,并将 CopyToOutputDirectory 设置为 PreserveNewest 或 Always。