C#,背景音乐,发布文件,ILMerge,一个exe文件

C#,背景音乐,发布文件,ILMerge,一个exe文件,c#,background,resources,release,ilmerge,C#,Background,Resources,Release,Ilmerge,我在Visual Studio 2013 Ultimate中制作了一个游戏。游戏有声音和背景音乐。使用“SoundPlayer”(单击按钮)播放声音,使用“WindowsMediaPlayer”播放bcg音乐。除bcg音乐文件外,所有.wav文件都位于“资源”中。此文件放置在bin/Debug/(或在bin/Release/)中,因为WMplayer无法从资源播放它(WMplayer只有属性URL,并且“player.URL=Properties.Resources.backgroundMusi

我在Visual Studio 2013 Ultimate中制作了一个游戏。游戏有声音和背景音乐。使用“SoundPlayer”(单击按钮)播放声音,使用“WindowsMediaPlayer”播放bcg音乐。除bcg音乐文件外,所有.wav文件都位于“资源”中。此文件放置在bin/Debug/(或在bin/Release/)中,因为WMplayer无法从资源播放它(WMplayer只有属性URL,并且“player.URL=Properties.Resources.backgroundMusicFile”不起作用)。现在我有发布目录与exe文件,dll,…和bcg音乐wav文件。当我尝试将它与“ILMerge”合并到一个exe文件中时,它不会合并bcg音乐wav文件。总之,我有1个合并的exe文件和1个bcg音乐wav文件在同一个目录下,以正常运行游戏。我的目标是只有一个exe文件。有没有办法做到这一点?
谢谢。

ILMerge仅支持.Net程序集。ILMerge无法将某些数据文件“嵌入”到exe中

您需要的是应用程序虚拟化:文件模拟。此方法基于钩子。正在拦截和预处理与文件子系统相关的每个系统调用。这允许模拟文件和目录,因此流程“认为”这些文件确实存在

不幸的是,我不知道免费的解决方案,但有第三方的

使用,您需要使用wav文件的数据创建一个虚拟文件(请参阅BoxedAppSDK_CreateVirtualFile)


您需要创建一个项目,将主exe指定为输入exe,并将WAV文件放入特殊文件夹
。最终打包的exe(需要一个exe)将工作,因为WAV文件确实存在。

这个问题似乎有助于您。。。您是在询问安装文件吗?软件产品通常(并非总是)使用安装包分发,NSIS可以生成单个exe安装。若您的意思是应用程序只有一个exe,那个么您就有一个问题—WMP和resources(),可能的解决方案是在应用程序启动时从资源(临时或缓存文件夹)中提取wav。ILMerge只合并程序集,它不能合并wav,除非wav在程序集(资源)中。我尝试了这些技巧,但似乎无法解决它。我决定将其保留为两个文件夹(.exe文件+.wav文件)。谢谢你的时间和帮助。