如何在资源和其他文件夹中使用c#app中的应用程序路径

时间:2014-09-12 10:03:40

标签: c# path

我正在制作一个应用程序,我将一些MP3文件放入一个单独的文件夹中,您可能会看到下面该目录的图片链接↓

enter image description here

现在我从工具箱中拿了一个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";
    }

3 个答案:

答案 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并在"属性"标签设置为"始终复制"或"复制如果更新":

Set to Copy To Output folder

然后您可以相应地设置您的网址:

private void button3_Click(object sender, EventArgs e)
{
    axWindowsMediaPlayer1.URL = @"dreammusic\DrmMTrack8.lite.mp3";
}

现在部署应用程序时,它将与MP3文件一起部署,并且URL将起作用。

答案 2 :(得分:0)

如果这些文件存储在其中一个“特殊文件夹”中(例如My DocumentsAppData/Roaming),则最简单的方法是将Environment.GetFolderPathEnvironment.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>