2013-03-20 72 views
0

如何導出嵌入到我的Resources.resx中的嵌入式.ico圖標文件?我發現這個例子,但我不確定targetAssembly部分是什麼。導出嵌入的.ico到磁盤

如果有人可以給我一些指點,這將是非常有益的。

public static void WriteResourceToFile(Assembly targetAssembly, string resourceName, string filepath) 
    { 

     using (Stream s = targetAssembly.GetManifestResourceStream(targetAssembly.GetName().Name + "." + resourceName)) 
     { 

      if (s == null) 
      { 

       throw new Exception("Cannot find embedded resource '" + resourceName + "'"); 

      } 

      byte[] buffer = new byte[s.Length]; 

      s.Read(buffer, 0, buffer.Length); 

      using (BinaryWriter sw = new BinaryWriter(File.Open(filepath, FileMode.Create))) 
      { 

       sw.Write(buffer); 

      } 

     } 

    } 
+0

看到我的第二個編輯和檢查出[免費電子書](http://stackoverflow.com/questions/194812/list-of-freely-available-programming-books) – 2013-03-20 03:31:32

+0

你的編輯2需要一個像Jason的FileStream發佈,而不是一個字符串。 – 2013-03-20 04:01:43

+0

不,「Properties.Resources.iconName.Save」方法有5個重載。我確實檢查了這一點,你一定見過傑森的答案,並認爲這種方法只支持流。 – 2013-03-20 04:16:58

回答

2

它看起來像(從你對Jeremy的回答的評論)你已經存儲在你的應用程序屬性中的圖標。如果是這種情況,則不需要手動查找並將其解析出執行程序集。

如果你看看Icon Documentation,你會發現它有一個叫做Save(...)的方法。方便不是嗎?

將其保存到磁盤與打開FileStream一樣簡單,並調用Save

你的情況:

using (var fStream = new FileStream(Path.Combine(userDir, "iconName.ico"), FileMode.OpenOrCreate, FileAccess.Write)) 
{ 
    Properties.Resources.iconName.Save(fStream); 
} 

簡單的東西,只是閱讀文檔。

+0

非常感謝您的幫助。我知道一定會讓你感到挫敗,因爲我對這一切都很陌生,但我正努力學習最好的方式。您是否認爲我之前沒有在Google上花費好幾個小時試圖在我發佈之前找到答案?當你知道去哪裏看,很容易。 – 2013-03-20 03:54:51

+1

我知道它可能令人沮喪,但C#中的大多數類通常在MSDN網站上有很好的文檔記錄。只需瀏覽「Save」頁面上的方法,就可以突出顯示您可能想要查看的內容。然後,你可以只是谷歌'保存圖標到磁盤C#'或類似的東西,瞧。 – 2013-03-20 04:28:34