系统安装的Visual Studio 2005 英文版。今天安装了SQL Server 2005 中文版的客户端以后,因为他们使用同样的资源文件,VS2005也变成了中文版。但是今天在使用VS2005时的添加->添加新项(Add-> New Item)时,竟然很多模板找不到了。连基本的Class,Interface,Form等模板都没有了,这样当然不行了,所以停下工作了,研究一下究竟是怎么回事!
以前知道,添加新项的模板都是保存在X:\Program Files\Microsoft Visual Studio 8\Common7\IDE\的ItemTemplates和ItemTemplatesCache文件夹里面,不同是ItemTemplates里面存储的是Zip格式的压缩文件,ItemTemplatesCache里面存储的是解压缩以后的文件。看了一会,发现里面的模板文件(比如Class.zip,Form.zip,Interface.zip等文件和文件夹)都还在),那么应该是配置文件不对了,到底是哪个配置文件呢?
仔细找找,看到ItemTemplatesCache目录下有个cache.bin的隐藏文件是比较新的,难道这个文件被更改了,到可以正常使用此功能的同事的机器上,拷贝了这个文件,覆盖后,原来丢失的模板,回来了!
但是,仔细一看,由于使用了他人机器的cache.bin文件,现在显示的新增项目的模板里面是别人的模板,如果真实的模板不存在,新建的时候就会出错,而且,我原来一些自己的模板也都没有了。看来得自己生成cache.bin文件。
MSDN上找到了:
devenv.exe /InstallVSTemplates
注册位于 <VisualStudioInstallDir>\Common7\IDE\ProjectTemplates 或 <VisualStudioInstallDir>\Common7\IDE\ItemTemplates 中的项目或项模板,这样就可以通过“新建项目”和“添加新项”对话框访问它们。
好,运行之,半分钟后。重新运行Vs2005,新增,问题依然存在,不能新增class.cs form.cs interface.cs等模板。难道微软的叙述有错吗?
再仔细查看ItemTemplatesCache和ItemTemplates两个目录,结构是一样的。只是ItemTemplatesCache将ItemTemplates中.zip文件的解压缩版本。难道是英文版和中文版的错误。查看ItemTemplates文件下的CSharp,Jsharp,VisualBasic等文件夹,果然发现下面都有个1033文件夹,1033英文版的Local ID,那么我的安装SQL Server2005后被翻译成中文版的VS2005也就会找中文版的2052目录了。既然如此,将ItemTemplates下的各个文件夹下,凡是有1033目录的,按Ctrl+拖动,复制一份,然后将“复件 1033”改名为“2052”。(实验发现,将1033目录下的文件拷贝到其上级目录,也可以达到目的)。复制了各个文件下的1033目录为2052后,重新运行devenv.exe /InstallVSTemplates登录后,问题完全解决。
(文后有对1033和2052的注解)
好了,总结一下:
问题描述:VS2005不能正确的使用添加新项功能,里面的很多模板不见了!
解决方法:拷找到X:\Program Files\Microsoft Visual Studio 8\Common7\IDE\ ItemTemplates目录下一般有这几个文件夹(根据您自己的自定义安装会有所不同),然后复制1033目录为2052目录,在命令行下运行devenv.exe /InstallVSTemplates,这是,系统会删除掉ItemTemplatesCache目录,然后根据ItemTemplates的结构重新构造ItemTemplatesCache文件夹及其文件。
下图是被错误的更改的添加选项,很多模板没有了!
下面修复完成的。终于找到了原来的模板
其实,相对于ItemTemplates和ItemTemplatesCache,X:\Program Files\Microsoft Visual Studio 8\Common7\IDE还有个ProjectTemplates以及ProjectTemplatesCache,存放的是项目模板,有时候当新建的项目模板找不到,或者想添加自定义的模板的时候,也可以用类似的方法来解决,只不过,这个时候运行的命令是:
devenv /setup
强制 Visual Studio 从所有可用的 VSPackages 合并用于描述菜单、工具栏和命令组的资源元数据。
------------------------------------------------------
附:对1033和2052的解释
1033和2052等叫做 LCID(Locale ID,区域性标识符),其中1033 表示英语(美国),2052表示简体中文,
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。