2017-04-09 34 views
0

這假設是一個簡單的問題;不要作爲堆棧溢出問題發佈!vb.net連接vs嵌入資源奇怪的結果 - VS 2017 CE

本文以下:How to: Create Embedded Resources

  1. 我創造了一個新的和新鮮的Form1.vb在Visual Studio 2017年社區版測試。
  2. 添加了一個大的testfile.WAV文件作爲測試資源。
  3. 檢查鏈接類型設置爲默認值:「在編譯鏈接 時間」Default Value
  4. 清理/構建/重建應用程序。

  • 仍然沒有不管我怎麼做,該result.exe文件是如此之大,反映了大testfile.wav文件的大小,並不能在任何情況下找到wav文件作爲單獨的鏈接資源檔案在bin\Debug文件夾!

  • 試圖改變幾乎所有地方;但沒有成功!

  • 我想到的是讓在bin\Debug單獨鏈接,而不是嵌入的文件夾都result.exetestfile.wav


看起來很怪異嗎?這是VS中還是應用程序設置中的錯誤?

謝謝你這麼多 知道的任何暗示

注意:我試圖達到的創建我的應用程序,用戶可以選擇外觀不同的主題;我的努力突破了上述情況。如果它將包含它的資源,那麼result.exe以10s爲單位結束沒有意義!

回答

0

TL; DR:如果你想要它作爲一個鬆散的文件,那麼你需要把它作爲一個鬆散的文件。資源始終嵌入在應用程序中。

如果您通過Project Properties > Resources添加資源,那麼它將始終嵌入您的應用程序中。

如果你想要它作爲一個鬆散的文件,那麼你只需通過Add Existing Item導入到您的項目,並將該項目的Copy to Output Directory屬性設置爲Copy Always。然後通過舉例說明:

Dim WavPath As String = Path.Combine(Application.StartupPath, "yourfile.wav") 
Dim WavFile As Byte() = File.ReadAllBytes(WavPath) 

鏈接與嵌入僅在設計時有所不同。鏈接的資源仍然嵌入在您的應用程序中,但在設計時您可以編輯它們並可以輕鬆添加或刪除其他資源。

但是,嵌入式資源即使在設計時也嵌入到.resx文件中,並且編輯這些資源時必須將其導出或將其更改爲鏈接資源。嵌入資源主要用於需要在多個項目中共享相同資源的情況。然後將資源嵌入到.resx文件中,因此您只需複製該文件,而不是每個包含的文件。

+0

謝謝,但是有兩種選擇的原因是什麼? '在編譯時鏈接'和'嵌入.resx.'。爲什麼輸出總是一樣的?是否有一個具體的原因,爲什麼改變這個選項不會改變什麼?通過'My.Resources.MyFile'訪問資源比在代碼中使用資源更方便。 – wpcoder

+0

@wpcoder:請參閱我的編輯。 –

+0

@wpcoder:這兩個選項只在設計時纔有所作爲。編譯應用程序時沒有區別。 –