一、为什么使用VS2008
VS2008(Microsoft Visual Studio 2008)是一个较新版本,新版往往都比旧版本完善,而且会提供更多的特性与实用功能,但不一定是最稳定的版本。不稳定但不会影响喜欢尝新一族,相信很多人都是为了看看VS2008的新脸孔而装了VS2008。当然相信也有很多人会去使用VS2008的一些新特性,比如在.NET2.0刚出来的时候,很多人觉得新提供的“泛型”很有用,于是开始使用新的集成IDE。
但是要换新的IDE并不是想换就换的,比如公司要求用什么版本,我们个人是不能用新的版本来进行开发的,因为你的项目还要与其它团队队友合作。另外你的程序发布环境也是一个制约因素,比于说拿.NET开发网站,客户说他自己没有服务器,而且现在众多虚拟主机都还没有提供新版本.NET环境支持情况下,我们还是不要拿新版本应用于实际开发中。最多出于个人好奇,在自己机子上装上玩玩就行了。
二、我为什么要用VS2005打开VS2008创建的解决方案
作为一个小小的程序员,我有一个学习提高的习惯就是经常download些源码读读,就拿.NET方面来说,有时候下载些整站源码,发现打不开,这往往是因为下载的源码是用较高版本的IDE开发的,这样虽然可以用记本事或一些轻量级的具有代码着色功能的编辑器查看,但始终感觉不够方便,小项目逐个文件打开阅读还算过的去,但是遇到大项目,这样阅读效率低,我喜欢VS中的“转到定义”功能,这样可以轻松地查看当前调用方法或类的具体定义代码片段。
也许你会回答我你下载哪个版本开发的就用哪个版本IDE打开就行了,但是对于VS,这家伙太大了,我不可能仅仅为了方便读一下代码要重新装个新版本,而不是用公司现有版本的VS来打开它,我认为这代价很高。于是我想要找到一种较为折中的办法,这就是能不能用VS2005打开VS2008建的解决方案。
经过查阅相关资料后发现有牛人试验成功。但有一点还是要注意的,如果你下载的代码是用VS2008开发的,程序本身一点没有用VS2008,或用.NET3.5以上特性,我们还是可能完美编译并运行它的,否则我们最多是在VS2005中打开看看代码,运行则会报错,除非你改变VS2005的.NET版本(不知道能不能改变)。
三、关于VS解决方案及项目文件格式
尝试用记事本去打开VS解决方案(sln格式)及项目文件(csproj格式),发现都能正常打开并看到相关内容,发现sln文件类似于Apache的配置文件httpd.conf,而csproj是标准的XML文档,这意味着可以拿它与其它版本生成的文件进行比较并作相应修改,下面再推荐一个实用对比小软件。
四、动手修改VS2008的解决方案文件,以让VS2005打开它
<1>用记事本打开解决方案文件“解决方案名.sln”,然后修改最上面两行为如下代码:
Microsoft Visual Studio Solution File, Format Version 9.00 # Visual Studio 2005
<2>用记事本打开每个项目文件“项目名.csproj”,在<PropertyGroup>节点下移除如下节点:
<TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
<3>并修改ProductVersion和Import两个节点为如下:
<ProductVersion>8.0.50727</ProductVersion>
<Import Project="$(MSBuildBinPath)/Microsoft.CSharp.targets" />
注意:在我修改Discuz!NT源码部分项目文件XML的时候,发现上面说的一些节点是没有的,经对比分析发现,这些项目应该是用旧版本VS开发的,在转到新版本VS后,这些项目再没有被修改过,所以可以不理。而在我试图运行整个项目的时候,又发现运行不起来,根据错误报告发现Discuz!NT项目确实用了.NET3.5的一些新特性,比如用了属性的缺省写法:public int TimeOut { set; get; }