我的VS2012裝好之后Find and Replace (Ctrl+Shift+F)功能就一直不能正常工作,具體表現是:
- Find Next功能可用,但Find All的結果不顯示每一條matched line.
- Find Next and Replace功能可用,但Replace All不能完成替換,在提示“xxx occrurrence(s) replaced.”之后並未真正替換內容。
經過網上一番查找,有兩種普遍的解決方法:
- VS"Find in Files"失效的解決方法一:讓VS窗口獲得焦點,順利按以下快捷鍵Ctrl+Break,Ctrl+Scroll Lock,Alt+Break
- VS"Find in Files"失效的解決方法二:在注冊表中刪除"HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\9.0\Find"后重啟VS.
但嘗試之后都不能解決我的問題。期間還嘗試過重置VS所有設置,禁用所有插件,都不起效。
后來在winking等一眾大神的幫助下,發現可能是COM組件注冊錯誤引起的問題,根據http://social.msdn.microsoft.com/Forums/en-US/vsx/thread/40c9ad4a-8cee-4f3f-b420-c7cc0463942a/中的辦法解決了我的問題。
解決方案引用如下:
Please check if the following registry key is ok. Fixing this solved the issue for me.
[HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{73B7DC00-F498-4ABD-AB79-D07AFD52F395}]
@="PSFactoryBuffer"
[HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{73B7DC00-F498-4ABD-AB79-D07AFD52F395}\InProcServer32]
@="C:\\Program Files (x86)\\Common Files\\Microsoft Shared\\MSEnv\\TextMgrP.dll" (我本機上的此項為空)
"ThreadingModel"="Both"
經過大神們的分析,引起這個問題的一個可能原因是:
我在安裝了VS2012之后,在沒有打開使用過的情況下直接安裝了Update1補丁,而Update1補丁本身存在缺陷,引起COM組件引用錯誤,最終造成這個問題。
感謝幫助我解決問題的大神們!
追加:
還有一個類似的問題,曾經有同事發現某些時候XAML IntelliSense或者Code Editor IntelliSense不起作用,究其原因,也是TextMgrP.dll中的COM組件注冊問題,修復辦法就是找到對應的COM組件的注冊鍵,更新TextMgrP.dll的路徑。