我有一个使用windows media元素播放音乐的应用程序。代码如下:播放音乐:
public void PlaySound()
{
string solutionPath = Directory.GetParent(Assembly.GetExecutingAssembly().Location).Parent.Parent.Parent.FullName;
string path = Path.Combine(solutionPath, "FolderNameWithinSolution", myMusic.wav);
mediaElement.LoadedBehavior = MediaState.Manual;
mediaElement.Stop();
mediaElement.Source = new Uri(path, UriKind.RelativeOrAbsolute);
mediaElement.Volume = 0.2;
mediaElement.Play();
}
myMusic.wav是FolderNameWithinSolution中保存的文件。这被设置为Content&复制总是。一切正常,直到我部署它,然后应用程序就不会播放音乐。
我检查了应用程序文件,该文件夹正在显示其中的音乐,但音乐显示为myMusic.wav.deploy。
有人可以协助我错误设置的地方。我也尝试在applcation文件中重命名文件以重新启动.deploy,但仍然无法正常工作,
答案 0 :(得分:0)
.Parent.Parent.Parent.FullName
表示当您从project\bin\debug
目录运行程序时,您可能正在寻找与.SLN文件位于同一位置的.WAV文件。这不是.WAV文件部署后的位置。此外,我相信Copy Always
应该将.WAV文件复制到您可执行的同一目录中。由于您使用可执行文件作为导航的起点找到声音文件,因此您需要确保它在开发环境和部署后都位于相对于可执行文件的完全相同的位置。
基本上,部署时,您的文件将移动到其他位置。确保在构建配置和安装程序配置中指定它应该放在何处。