2012-05-12 66 views
2

這麼久以來,我按照說明在這裏讓我的程序在雙擊特定文件類型時打開。 http://www.dreamincode.net/forums/topic/58005-file-associations-in-visual-studio/在Visual Studio中不更新的文件類型圖標

我包含一個圖標以與指定的文件類型相關聯。出現的問題是,當我回去更新/更改該圖標圖像並嘗試重新安裝程序的較新版本時,會使用舊圖標,而不是我將其更改爲在Visual Studio中的圖標...

+0

操作系統保留這些圖標的緩存。這可能是你問題的根源。如果是這樣,清除緩存應該修復它。嘗試搜索「Windows圖標緩存重建」。 – phoog

回答

2

該圖標可能緩存在shell圖標緩存中。在NT6上刪除%USERPROFILE%\AppData\Local\IconCache.db(並殺死瀏覽器或註銷)或在舊系統上使用TweakUI

+0

這確實是個問題。感謝大家的好的和快速的反應,作爲一個總的nooby程序員,有沒有什麼辦法可以在解決方案/部署中以編程方式執行此操作? –

+0

這個問題在開發機器上更常見,我不建議您嘗試刪除最終用戶機器上的緩存。調用SHChangeNotify如果VS沒有爲你做,這是記錄的方式,應該在正常情況下足夠... – Anders

0

嘗試使用SHChangeNotify

[DllImport("shell32.dll", CharSet = CharSet.Auto, SetLastError = true)] 
private static extern void SHChangeNotify(int wEventId, int uFlags, IntPtr dwItem1, IntPtr dwItem2); 

SHChangeNotify(0x08000000, 0x0000, (IntPtr)null, (IntPtr)null);//SHCNE_ASSOCCHANGED SHCNF_IDLIST 
+0

因此,在嘗試調用SHChangeNotify之後,它似乎不會令人耳目一新。我發現有趣的是我的程序中的打開文件對話框(使用C#庫)顯示更新的圖標,但如果我要通過Windows資源管理器,文件圖標保持不變(這發生在使用SHChangeNotify之前) –

0

有兩個步驟,以使該圖標更新:1,覆蓋項目文件夾中的舊.ico文件(或者無論它的保留)與新文件 - 這將更新應用程序屬性中的圖標。 2.編輯Mainform,轉到圖標屬性並重新選擇圖標文件 - 這將更新窗口和任務欄上顯示的圖標。

相關問題