2015-10-02 36 views
0

我試圖將圖標添加到構建在Visual Studio中的.NET exe文件,但不知何故,它不起作用。將圖標添加到Visual Studio中的Windows資源中

下面是步驟來重現問題:1。 我創建了一個新的Windows窗體應用程序: 新建項目 - > Windows窗體應用程序 2.打開它的資源: 右鍵單擊解決方案 - >屬性 - >資源 3.試圖添加一個圖標文件: 圖標 - >添加資源 - >添加Exising File->並選擇一個現有的圖標。

它似乎已添加圖標。所以,我構建了exe文件並關閉瞭解決方案,但是生成的exe文件沒有包含Windows資源中的圖標。我驗證了通過Visual Studio打開exe文件。 Visual Studio向我展示了資源,其中包含清單和版本,但沒有圖標。

問題:我做錯了什麼?爲什麼添加的圖標不會出現在Windows資源中?

回答

0

資源是否顯示在您的解決方案資源管理器中?如果沒有,我會檢查here並按照這些步驟操作。此外,檢查實際上是在增加的資源,你可以添加這樣的事情

MessageBox.Show(System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceNames().Aggregate((x,y)=> x + " " + y)); 

請注意,這表明你的資源,你必須導航到該資源在Solution Explorer中,打開它的屬性,並選擇Build Action - > Embedded Resource。 (您也可以使用Resource,請參閱文章here以瞭解兩個選項之間的區別)

作爲最後一點,在完成此操作後,我嘗試使用您的過程在Visual Studio中打開.exe,並且確實無法在視圖中找到資源。然而,在dotPeek中打開相同的exe文件,我可以在資源下找到我在代碼中嵌入的整個圖像。

+0

我看到在資源文件夾中的添加圖標。當我添加MessageBox時,我看到:<程序名> .Properties.Resources.resources>。 然後我將'Build Action'更改爲'Embedded Resources',消息更改爲:<程序名> .Resources。 Properties.Resources.resources>' 但我仍然無法當我打開exe文件時,看到Windows資源中的圖標。 – svat

+0

是否通過Visual Studio打開exe文件時看到圖標的目標?還是它將圖標添加到DLL?因爲你已經實現了後者,而前者可能是Visual Studio的限制。我能夠看到使用dotPeek嵌入的資源,這在處理exes時看起來更加健壯。 – Kolichikov

+0

目標是將所選圖標添加到exe資源。無論我使用什麼工具,我都看不到exe資源中的圖標。也許它嵌入了某處,但它不在資源中。 – svat

0

管理資源以與Win32資源不同的方式嵌入到程序集中。

如果目標只是添加默認圖標,則可以使用項目屬性中的「應用程序」選項卡完成。

如果目標添加任意的Win32資源,那麼答案可以在這裏找到:How to embed a resource in a .NET PE executable?

相關問題