2014-09-12 93 views
0

我在做一個應用程序,其中我把一些MP3文件合併成一個單一的文件夾,您可能會看到下面↓如何使用應用程序的路徑,從資源和其他文件夾C#應用程序太

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"; 
    } 

回答

0

如果這些文件都存儲在「特殊文件夾」(如My Documents,或AppData/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

+1

我認爲問題位於音樂位於相對於可執行文件路徑,而不是在用戶特殊文件夾 – Marco 2014-09-12 10:10:58

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"); 
} 
+0

不適用於您的給定解決方案:( – iFAMoUS 2014-09-12 10:26:26

+0

您收到錯誤是什麼? – Marco 2014-09-12 11:06:04

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將起作用。

相關問題