我正在制作一个应用程序,我将一些MP3文件放入一个单独的文件夹中,您可能会看到下面该目录的图片链接↓
现在我从工具箱中拿了一个Windows媒体播放器工具,我正在用一个按钮编写这个代码。
private void button3_Click(object sender, EventArgs e)
{
axWindowsMediaPlayer1.URL = "C:\\Users\\Windows\\Documents\\Visual Studio 2012\\Projects\\FreshAbc\\FreshAbc\\dreammusic\\DrmMTrack8.lite.mp3";
}
但是当我发布它并在其他电脑上运行时它向我显示一条消息,该目录缺失并且等等等等,所以我的简单问题是有没有办法编写这样的代码,这样如果我给某人发布版本他可以使用: -
private void button3_Click(object sender, EventArgs e)
{
axWindowsMediaPlayer1.URL = "\\dreammusic\\DrmMTrack8.lite.mp3";
}
答案 0 :(得分:1)
您可以使用反射:
private void button3_Click(object sender, EventArgs e)
{
var AssemblyPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().CodeBase);
axWindowsMediaPlayer1.URL = Path.Combine(AssemblyPath, "dreammusic\\DrmMTrack8.lite.mp3");
}
答案 1 :(得分:1)
首先,您需要确保所有的mp3"复制到输出目录"属性设置为复制到输出文件夹。逐个点击每个MP3并在"属性"标签设置为"始终复制"或"复制如果更新":
然后您可以相应地设置您的网址:
private void button3_Click(object sender, EventArgs e)
{
axWindowsMediaPlayer1.URL = @"dreammusic\DrmMTrack8.lite.mp3";
}
现在部署应用程序时,它将与MP3文件一起部署,并且URL将起作用。
答案 2 :(得分:0)
如果这些文件存储在其中一个“特殊文件夹”中(例如My Documents
或AppData/Roaming
),则最简单的方法是将Environment.GetFolderPath
与Environment.SpecialFolder
一起使用。即调用Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments))
会在后XP机器上返回类似C:\Users\(some user)\Documents\
的内容。
实际上取决于您部署文件的方式。如果它们部署在相对于应用程序条目程序集的子文件夹中,那么指定相对路径应该有效:
axWindowsMediaPlayer1.URL = "dreammusic\\DrmMTrack8.lite.mp3";
您的代码存在的问题是前导反斜杠(\\dreammusic
),这会使您的路径成为绝对(根)路径并被解析为C:\\dreammusic\\DrmMTrack8.lite.mp3
。< / p>