2

據我所知,至少存在三種類型的圖標嵌入。有shell32.dll和朋友使用的原始樣式,.NET的嵌入以及WPF使用的新類型。我正在尋找如何執行第一個,因爲我希望有一些其他圖標可用作跳轉列表的資源,它只能接受該樣式。但是,我無法弄清楚如何嵌入這種風格,只有其他兩種。如何在Visual Studio 2010中執行「shell」圖標嵌入?

我該怎麼做?我在谷歌等找到的所有結果都是爲ResX文件或類似圖標添加圖標。

回答

3

我從來沒有聽說過「圖標嵌入」之前。如果您正在討論在資源管理器或桌面快捷方式中EXE或DLL可見的圖標,那麼對於任何Windows程序都是這樣做的。 WF和WPF都使用/ win32res編譯選項爲程序集提供了一個帶有選定圖標的非託管資源。您可以在Visual Studio中使用File + Open + File查看它,選擇EXE或DLL。

要創建.res文件,請首先創建一個.rc文件。您可以使用C++ IDE創建一個。右鍵單擊該解決方案,添加新項目,Visual C++,Win32,Win32控制檯應用程序。右鍵單擊資源文件文件夾,添加+資源,選擇圖標,導入。選擇你的文件。根據需要重複。在生成之後,您將在項目的Debug build目錄中獲得一個.res文件。

回到C#項目,Project + Properties,Application選項卡。選擇資源文件選項並導航到.res文件。

+1

請原諒我,如果我的術語不正確,不知道要搜索什麼是問題的一部分。按照您所描述的方式打開VS中的程序集,我可以看到應用程序自己的圖標,這就是我所說的;但是,我想知道如何在構建過程中自動添加其他圖標。 – JustABill 2010-06-07 21:57:37

+0

@Just:發佈更新。 – 2010-06-07 22:28:18

3

我強烈建議看看這裏發佈的解決方案(http://einaregilsson.com/add-multiple-icons-to-a-dotnet-application/)。它直接集成到ms build build post事件中,並且不需要非託管項目(從.rc/.res文件創建程序集)。

隨時更新圖標並從IL保存您合併編譯的C++程序集時,可以消除對管理第二個解決方案/程序集的依賴。

我還建議看看WIX的部署。我已經寫了一個指南,伴隨着這個答案位於here

+1

這是一個非常有用的帖子,用於將圖標添加到JumpList圖標。 – Echilon 2012-07-20 09:29:17