该死的兼容性
今天因为以前用VS2005开发的网站发现了一个小bug,于是备份原项目文件后,用VS2008 beta2打开.
备份?不用,我自己做过了.
升级项目文件到2008的格式?嗯,升吧.
升级到.net 3.5?算了吧,等正式版出来了再说.
好,VS告诉我一切顺利,我于是更改了出错的语句(添加一个if语句,十几个字符而已),F5,没问题,于是发布到本机,远程登录,拷过去重编译的dll.
于是灾难开始了.
网站马上不能用了,提示"未能加载文件或程序集“System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”或它的某一个依赖项。"
晕了,我不明明记得不让它升级到3.5的么?好吧,我可能记错了,那就改过来吧.
但是,我没有办法改过来.
我把项目改成定位到.Net 2.0下的,然后发现添加不了Web.Extensions.dll,因为机器上只有一个Web.Extensions.dll,是定位到.Net 3.5的.
好吧,我再装一次Ajax 1.0 for Asp.net 2.0. 下载,安装,再打开VS, 添加引用...
它不让我添!无论是那个3.5.0.0的,还是刚下的那个1.0.61025.0的,它居然都说定位于更高版本的.Net Framework!
试了无数次,包括重启VS, 重启系统等大招都不行,这下彻底郁闷了.
到网上搜索一下,看到了这个:
[quote]
You should download and run this batch file. This takes only a few seconds to run, and fixes an issue we found earlier this week with the version policy of System.Web.Extensions.dll - which is the assembly that contains ASP.NET AJAX. If you don't run this batch file, then existing ASP.NET 2.0 projects built with ASP.NET AJAX 1.0 and VS 2005 will end up automatically picking up the new version of ASP.NET AJAX that ships in .NET 3.5 Beta2. This will work and run fine - but cause you to inadvertently introduce a .NET 3.5 dependency in the applications you build with VS 2005. Running the batch file will change the version binding policy of the new System.Web.Extensions.dll assembly and ensure that you only use the new .NET 3.5 ASP.NET AJAX version with projects that you are explicitly building for .NET 3.5.
[/quote]
好吧,我下载,我安装,我重启,我还是没办法添加这个引用.
我服了,我重装回VS2005总行了吧?
事实告诉我不行,即使我再花了半个小时重装VS2005 SP1也不行.
它根本就打不开我备份的解决方案,所有项目都提示"未知的项目类型".不可能吧,我明明是在用VS2008之前备的份啊,难道因为以前开发时用过一些插件,现在没有装么?
那我用VS2005 重建一个解决方案,把源码文件一个个的拉进去重新编译,总行吧?
依然不行.VS2005里压根就没有类库项目,Web应用等等的项目模板,只有几个安装啊之类的.估计是与VS2008冲突?
三个小时之后我终于决定了,升级到.Net 3.5吧.
半小时后,我发现在服务器上下载/安装.Net 3.5需要一个多小时...
我说微软我的神啊,您能把兼容性做得好点么?
-----------------
更新:一个多小时后.Net 3.5安装程序告诉我什么runtime should terminate之类的,安装不成功!
-----------------
更新: 第二天,重新在服务器上安装.Net 3.5,莫名其妙地成功.
并且发现了为什么VS2005不能创建类库项目:为了加快安装速度,我只选择了VWD,没安装VC#.
备份?不用,我自己做过了.
升级项目文件到2008的格式?嗯,升吧.
升级到.net 3.5?算了吧,等正式版出来了再说.
好,VS告诉我一切顺利,我于是更改了出错的语句(添加一个if语句,十几个字符而已),F5,没问题,于是发布到本机,远程登录,拷过去重编译的dll.
于是灾难开始了.
网站马上不能用了,提示"未能加载文件或程序集“System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”或它的某一个依赖项。"
晕了,我不明明记得不让它升级到3.5的么?好吧,我可能记错了,那就改过来吧.
但是,我没有办法改过来.
我把项目改成定位到.Net 2.0下的,然后发现添加不了Web.Extensions.dll,因为机器上只有一个Web.Extensions.dll,是定位到.Net 3.5的.
好吧,我再装一次Ajax 1.0 for Asp.net 2.0. 下载,安装,再打开VS, 添加引用...
它不让我添!无论是那个3.5.0.0的,还是刚下的那个1.0.61025.0的,它居然都说定位于更高版本的.Net Framework!
试了无数次,包括重启VS, 重启系统等大招都不行,这下彻底郁闷了.
到网上搜索一下,看到了这个:
[quote]
You should download and run this batch file. This takes only a few seconds to run, and fixes an issue we found earlier this week with the version policy of System.Web.Extensions.dll - which is the assembly that contains ASP.NET AJAX. If you don't run this batch file, then existing ASP.NET 2.0 projects built with ASP.NET AJAX 1.0 and VS 2005 will end up automatically picking up the new version of ASP.NET AJAX that ships in .NET 3.5 Beta2. This will work and run fine - but cause you to inadvertently introduce a .NET 3.5 dependency in the applications you build with VS 2005. Running the batch file will change the version binding policy of the new System.Web.Extensions.dll assembly and ensure that you only use the new .NET 3.5 ASP.NET AJAX version with projects that you are explicitly building for .NET 3.5.
[/quote]
好吧,我下载,我安装,我重启,我还是没办法添加这个引用.
我服了,我重装回VS2005总行了吧?
事实告诉我不行,即使我再花了半个小时重装VS2005 SP1也不行.
它根本就打不开我备份的解决方案,所有项目都提示"未知的项目类型".不可能吧,我明明是在用VS2008之前备的份啊,难道因为以前开发时用过一些插件,现在没有装么?
那我用VS2005 重建一个解决方案,把源码文件一个个的拉进去重新编译,总行吧?
依然不行.VS2005里压根就没有类库项目,Web应用等等的项目模板,只有几个安装啊之类的.估计是与VS2008冲突?
三个小时之后我终于决定了,升级到.Net 3.5吧.
半小时后,我发现在服务器上下载/安装.Net 3.5需要一个多小时...
我说微软我的神啊,您能把兼容性做得好点么?
-----------------
更新:一个多小时后.Net 3.5安装程序告诉我什么runtime should terminate之类的,安装不成功!
-----------------
更新: 第二天,重新在服务器上安装.Net 3.5,莫名其妙地成功.
并且发现了为什么VS2005不能创建类库项目:为了加快安装速度,我只选择了VWD,没安装VC#.