关于VS2005中的Code Snippets Manager的问题及解决
2006-06-29 18:23
621 查看
Code Snippets Manager是VS2005专门用来管理代码块智能感知的工具。
然而,使用它并没有预想中的那么顺利,特别是在做过多次目录添加和删除之后,可能出现添加在列表中的目录无法在智能感知列表中显示出来的情况;甚至会出现列表当中明明没有这个目录,却也添加不进去的情况,它总是认为这个目录已经在列表中存在。为了解决这个问题,我对它的存储方式作了一些研究,并跟踪了相关的注册表和文件变化,下面是我的研究结果。
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文件。
然而,使用它并没有预想中的那么顺利,特别是在做过多次目录添加和删除之后,可能出现添加在列表中的目录无法在智能感知列表中显示出来的情况;甚至会出现列表当中明明没有这个目录,却也添加不进去的情况,它总是认为这个目录已经在列表中存在。为了解决这个问题,我对它的存储方式作了一些研究,并跟踪了相关的注册表和文件变化,下面是我的研究结果。
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的问题及解决
- 关于VS2005中的Code Snippets Manager的问题及解决
- 关于VS2005中的Code Snippets Manager的问题及解决
- 关于vs2005的“应用程序配置不正确,无法运行”问题的解决方法
- 关于在使用codeblocks+wxWidgets的过程中遇到的问题及解决
- 解决关于sdk manager下载慢的问题
- 关于vs2005 MyEclipse7.0 连接SQL2005问题解决
- 关于解决DockManager如何停靠在其他布局控件问题
- 关于Error:Error converting bytecode to dex问题解决
- 关于vs2005 MyEclipse7.0 连接SQL2005问题解决
- 关于Android SDK Manager启动时闪一下,就没反应的问题解决方法
- 关于vs2005的“应用程序配置不正确,无法运行”问题的解决方法
- 关于VS2005编译wince Application 时缺少DLL问题的解决
- 关于vs2005中网站管理工具中的“安全 ”选项无法打开和缺少AspNetDB.mdf数据库的问题解决办法
- vs2005中文RTM版:找回丢失了的代码段管理器(Code Snippets manager)
- 关于hibernate查询视图时,相同主键的两条记录映射问题【已解决】
- (转载)Hadoop关于处理大量小文件的问题和解决方法
- 解决使用tomcat6-maven-plugin时的"can not invoke tomcat manager"问题
- 解决kibana 4 关于响应时间的问题
- 关于iOS6应用中第三方类库不支持armv7s的问题解决