由于软件更新速度太快,功能也越来越全面,经常会遇到无法用当期低版本的软件打开高版本编程的工程的问题,最近写代码时就遇到这样的情况。下面是我总结的如何用Vs2008打开Vs2010所建的项目的方法,希望对大家有帮助。
如何在当前的Visual Studio版本下打开高版本的工程
1 关于VS各个版本的不同
从vc6到vs2013,vs的解决方案和工程文件有了很大的变迁:
1)vc6时代,dsw和dsp文件,高版本打开时需要转换;
2)vs2003和vs2005没用过,被我直接跳过了,不做评论;
3)vs2008是sln和vcproj文件,相对于vc6有很大的不同;
4)vs2010是sln和vcxproj文件,sln文件格式同2008相比,就多了一个字段;但是工程文件改变很大,换了扩展名。从2008等老版本迁入的话还是需要格式转换。
可以说微软认为2010的格式经过多年的摸索已经成熟了,尤其是将目录设置同工程绑定了在一起(原来是同开发工具绑定的)和支持”平台工具集“(即vs2010开始支持使用2008的编译环境来编译程序),可以满足后续一段时间的需求了,后续的2012和2013都没有对文件格式做出更多的改进,是可以兼容的。
比如说拿到一个vs2010的项目,想用2012编译的话,直接打开sln文件,将其中的2010字样改为2012即可,双击打开,vs会对文件内容做微笑调整,但是文件格式本身无需变化。
2 如何用Vs2008打开Vs2010所建的项目
下面方法可以实现vs2010建立的项目怎么在vs2008下打开, 前提是vs2010里用的Framework是3.5建的项目,否则无效:< xmlnamespace prefix="o" ns ="urn:schemas-microsoft-com:office:office" />
1)改解决方案的版本:找到项目的.SLN文件用记事本打开,vs2010下是:Microsoft Visual Studio Solution File, Format Version 11.00#Visual Studio 2010将其改为:MicrosoftVisual Studio Solution File, Format Version 10.00# Visual Studio 2008
2)修改.csproj文件,找到该文件用记事本打开,里面有一行:将其中的10.0该为9.0;
3)在双击.SLN文件,打开成功。
缺点:如果再用2010 将其打开之后2008就有打不开了,郁闷。总不能老是该这么多的文件呀,在说了也不好记住,简单的办法就是:吧这三个文件改好了之后,如果用vs2010打开过之后,还想用2008打开,把改好的三个文件复制出来将其替换吧,省的我们来回的改了,这估计算是最好的办法了!
3 让vs2008与vs2012同时打开同一个项目文件
为了避免上述的麻烦,下面的方法可以实现:vs2008与vs2012之间如何在源码管理下同时打开一个项目文件进行开发(以c#开发为例,其他语言一样)。
1)关于解决方案
不建议把解决方案绑定到源码中,每个成员自己维护自己的解决方案文件。如果一定需要把解决方案也绑定到源码中,请针对不同版本的ide,保存不同的解决方案
如: projectA 保存成projectA_2012.sln 和projectA_2008.sln
2)关于项目文件
2.1用记事本打开项目文件,进入编辑状态
2.2修改 <Project ToolsVersion="4.0" 此处必须为高版本的version,2012和2010都是4.0否则,ide打开该项目会提示升级。
参考下图:
2.3此处注意,项目文件是2008产生的和2012产生的 查找的位置不一样
定位文件位置
2008: <ImportProject="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
2012: <ImportProject="$(MSBuildToolsPath)\Microsoft.CSharp.targets" >
替换以上内容为以下内容(2008与2012一致)
<ImportProject="$(MSBuildToolsPath)\Microsoft.CSharp.targets" Condition="'$(Solutions.VSVersion)' == '11.0'" />
<ImportProject="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
参考下图:
2.4 保存修改
3)把修改签入源码管理,此后从源码管理获取的项目文件已经支持2008和2012进行打开,小组开发成员通过加载项目需要的项目后各自保存自己的解决方案即可。
.SLN文件:
发现VS2008的SLN文件的开头会有如下代码:
Microsoft Visual Studio Solution File, Format Version 10.00 # Visual Studio 2008 |
打开VS2010的SLN文件的开头却是如下代码:
|
Microsoft Visual Studio Solution File, Format Version 11.00 # Visual Studio 2010 |
试着将VS2010的SLN的前面这两行替换成了VS2008的那两行代码,保存关闭,然后双击打开的时候就选择了VS2008,而且打开的项目也是完全没有问题的。
分享一下这个小技巧,可能会有人需要哦。
备注:使用的.Net framework一定不要高于VS2008,也就是说一定要是VS2008中有的才可以,不然会报错的。
补充一点,我这里测试的C/S程序,也就是winform下是没有什么问题的,当然也不完全保证一定正确。
希望测试发现有问题可以在回复中发一下,我们一起研究一下怎么去解决。
补充
在我尝试中发现就算更改这些以后有可能某些VS2010的项目仍然无法使用VS2008打开,因为VS2010新建的.csproj文件中toolsversion版本与VS2008不同,如图所示:
VS2008的是:
<?xmlversion="1.0" encoding="utf-8"?>
<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
VS2010的是:
<?xmlversion="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
所以在VS2010的sln文件修改完毕后,先检查一下sln下的所有.csproj文件是否还是4.0如果是4.0请修改为2.0或者3.5,然后再尝试使用VS2008打开。
参考:http://blog.csdn.net/deleteelf/article/details/8756857
http://mwga.net.blog.163.com/blog/static/1064567282011923978364/
http://www.cnblogs.com/boyliupan/archive/2010/06/22/1762726.html
更多,请关注:http://blog.csdn.net/tiandijun/,欢迎交流!