关于VS2005中的Code Snippets Manager的问题及解决
然而,使用它并沒有預想中的那么順利,特別是在做過多次目錄添加和刪除之后,可能出現添加在列表中的目錄無法在智能感知列表中顯示出來的情況;甚至會出現列表當中明明沒有這個目錄,卻也添加不進去的情況,它總是認為這個目錄已經在列表中存在。為了解決這個問題,我對它的存儲方式作了一些研究,并跟蹤了相關的注冊表和文件變化,下面是我的研究結果。
Code Snippets Manager主要在三個地方保存信息:
1. HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\8.0\Open Find\Microsoft Visual Studio\Settings\Code Snippets Directory\File Name MRU\Value
這是一個REG_MULTI_SZ 類型的值,可以用來存儲多個字符串,可以看作是一個字符串數組,這里用來存儲路徑,用回車作為分隔符,在我的機器上,它的值是這樣的。
C:\Documents and Settings\tonyqus\My Documents\MSDN\Visual C# 2005 Code Snippets\filesystem
C:\Documents and Settings\tonyqus\My Documents\MSDN\Visual C# 2005 Code Snippets\datatypes
C:\Documents and Settings\tonyqus\My Documents\MSDN\Visual C# 2005 Code Snippets\database
C:\Documents and Settings\tonyqus\My Documents\code1
C:\Documents and Settings\tonyqus\My Documents\MSDN\Visual C# 2005 Code Snippets\
C:\Program Files\Microsoft Visual Studio 8\VC#\Snippets\1033\Refactoring
C:\Documents and Settings\tonyqus\My Documents\MSDN\Visual C# 2005 Code Snippets\application
2.? HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\8.0\Languages\CodeExpansions\Visual C#\Path 
這是一個REG_SZ 類型的值,可以用來存儲字符串,這里用來存儲路徑,用分號分割,在我的機器上,它的值如下:
%InstallRoot%\VC#\Snippets\%LCID%\Visual C#\;%MyDocs%\Code Snippets\Visual C#\My Code Snippets\;%InstallRoot%\VC#\Snippets\%LCID%\OfficeDevelopment\;%InstallRoot%\VC#\Snippets\%LCID%\Refactoring\;C:\Documents and Settings\tonyqus\My Documents\code1\;C:\Program Files\Microsoft Visual Studio 8\VC#\Snippets\1033\Workflow\;C:\Documents and Settings\tonyqus\My Documents\MSDN\Visual C# 2005 Code Snippets\datatypes\
3.? C:\Documents and Settings\<Your Account Name>\Local Settings\Application Data\Microsoft\VisualStudio\8.0\1033\ExpansionsXML.xml
這是一個xml文件,結構比較復雜,我們可以看到在上面的兩個設置中,僅存儲目錄,而在這個文件中既保存目錄又保存目錄中的.snippet文件的完整路徑,這可能是為了提供.snippet文件的import功能而特地設計的。這里就不做展開了,大家有興趣的話,可以研究一下它的結構。
來說說可能出現的問題:
問題 1
在HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\8.0\Languages\CodeExpansions\Visual C#\Path 中存儲著兩個完全相同的路徑,如
C:\Documents and Settings\tonyqus\My Documents\MSDN\Visual C# 2005 Code Snippets\database
C:\Documents and Settings\tonyqus\My Documents\MSDN\Visual C# 2005 Code Snippets\database\
我們可以看到這兩個路徑唯一的差別就是一個'\',但似乎Code Snippets Manager不會對這樣的情況進行處理,它會認為這是兩個完全不同的路徑,所以如果出現這種情況,建議刪掉其中一個。
問題 2
在注冊表的兩個值中目錄明明存在,但卻無法在智能感知時列出該目錄,這可能是由于ExpansionsXML.xml沒有改目錄的相關信息所致,建議刪除或者重命名ExpansionsXML.xml,然后重新啟動VS2005,并打開Code Snippets Manager,你會發現一個Code Snippets Manager會根據注冊表中的路徑新建一個新的ExpansionsXML.xml文件。
問題 3
智能感知可以列出的目錄,在Code Snippets Manager的列表中根本沒有,但每次試圖添加目錄時,會報目錄已存在的錯誤。遇到這種情況,恐怕要對這三個存儲位置都要做處理,首先要確保注冊表中確實把這個目錄刪除了,還有就是重建ExpansionXML.xml文件。 
總結
以上是生活随笔為你收集整理的关于VS2005中的Code Snippets Manager的问题及解决的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 心灵测试绝对经典
- 下一篇: 简单实现AJAX: ASP.NET2.0
