2014-11-25 60 views
1

我管理了一個VB.NET ClassLibrary項目並將其編譯爲DLL。如何在NET DLL中設置默認圖標?

問題是,這個DLL是一個Win32程序的插件,它可以顯示DLL的主要圖標。 看起來像這個圖標被程序識別爲一個名爲MAINICON的資源(對於C++的例子,這是在.rc資源文件中描述的:MAINICON ICON「dllicon.ico」)。

有什麼辦法可以在.NET DLL中模擬這種行爲嗎?

P.S:我嘗試添加圖標作爲MAINICON命名爲嵌入式資源,但它無法識別。 它只顯示this default icon(不知道爲什麼)。

PPS:另外我得到這個線索(不知道它會幫助或沒有),但不知道如何使用它:

程序會默認在其資源編號最小的圖標。

+0

您是否嘗試過在Visual Studio中的一個項目的屬性頁? – 2014-11-25 06:28:49

+0

是的,但默認圖標被禁用ClassLibrary項目類型 - http://i.imgur.com/hyM0MJr.png – ladybug 2014-11-25 06:44:52

回答

0

如果我理解正確,你有一個應用程序訪問一個DLL,並且你希望apclication和DLL使用相同的圖標,這是應用程序的圖標。我有完全相同的用例。

我的代碼的第一行是

GetType(Form).GetField("defaultIcon", BindingFlags.NonPublic Or BindingFlags.[Static]).SetValue(Nothing, My.Resources.ThisAppsIcon) 

這裏假設你已經存儲在資源的默認圖標爲ThisAppsIcon

我SO幾個月前扯掉這一關,但沒有儲存評論中的URL,所以我不能歸因於它。向OP致歉。

我評論這行代碼爲

「純粹的邪惡

+0

對不起,我會再次澄清一些事情:DLL是一個win32應用程序的插件。這個應用程序可以顯示已安裝插件的列表(帶有圖標,如果可用,則被視爲MAINICON資源)。我只想知道如何構建我的Dll以在那裏列出資源圖標。到目前爲止,它不被應用識別。 – ladybug 2014-11-27 04:25:59

+0

也許人們會建議將資源嵌入到.net dll或一些骯髒的技巧的另一種方法......只是不明白爲什麼C++ rc「mainicon」資源被很好地識別,但.net資源不是...... – ladybug 2014-11-27 04:32:45

+0

所以我放棄了嘗試並在資源編輯器中手動替換圖標(Resource Tuner 2完美地解決了這個問題)。 – ladybug 2014-11-27 10:27:07