VS2003,我已经不能再忍受你了,我每修改我项目的文件内容,CS内容全变为灰色的,我没有办法工作.现在我决定离开你,使用Vs2008.
我试过十次转向到VS2008,但是每次都是失败结束,这次,我一定不能再失败,我已经不能接受这样的结果.
说明一下,这个项目比较大。编译好后,DLL有几M。三层架构,有Web Service 也有Remoting,分布式的系统,要和十多个不同的企业的系统对接。
升级的目的是提高开发效率,但是我又不想做太多的升级工作.因为这个项目有几十个不同的企业在用,十多万的用户,每个企业都有一些个性化的PAGE,我不可能去每个PAGE做相应的修改.所以成功的升级标准是:
1、PAGE页面不能因为升级做任何人工的修改。页面太多了,如果升级后,需要修改的话,工作量太大。
2、升级后,程序要能正常运行。
3、由于部份程序由于历史原因不可能转换。所以VS2008下的2.0版本的内容必须和1.1版本的程序仍像以前一样,能互相调用(Web Service)。
首先我选择了最新的VS2008+SP1.以前都是在VS2008下,没有用最新的SP,这次改进一下.
系统的转换非常的顺畅,一次性通过。
编译的时候,系统报了错误,
1、是一个从Decimal自动转换为int类型的数据。在VS2008下面,需要明确指定。
2、页面以前定义为 AutoEventWireup="false",现在 AutoEventWireup="false"则页面事件不能正常运行。必须所有的页面调整为 AutoEventWireup="True" ,这个可以采用一个程序统一调整。
处理后OK。
系统测试没有问题,上线。
部份模块上线后麻烦就来了,太大的麻烦了。
客户打电话来说以前从远程服务器获取的网页能正常显示,但是现在不能显示了,显示为乱码。
调试再调试,发现是WebClient的编码问题,以前WebClient获取的远程PAGE的Encoding是GB2312,现在变成了ISO-XXXXX的。估计是.Net的Bug。因为远程网页确实是GB2312.调整编码后,页面显示正常。
系统又发现,以前从远程获取的图片现在不能正常显示了(WebRequest)。从上面的BUG的解决经验来看,判定为编码问题,调了N个编码,还是不能解决,然后把该图片保存到文件,用IE打开,也不能显示。最后步进、再步进,原来Webrequest读内容,以前可以一次读出指定大小的字节,现在一次没有完整读出内容,比我指定的内容要少,所以获取的图片是不完整的,就不能正常显示。
以前的代码:
oWebByte=new byte[k];
try
{
int l=oReader.Read( oWebByte,0,k ) ;
}
catch(System.Exception oError)
{
//....
}
现在的代码
oWebByte=new byte[k];
int l = 0;
int m = 0;
while (k > 0)
{
try
{
l = oReader.Read(oWebByte, m, k);
}
catch (System.Exception oError)
{
//.........
}
if (l == 0)
{
break;
}
m = m + l;
k = k - l;
}
现在又发现了新的问题,某个页面总是报验证视图状态 MAC 失败,分析发现,这个页面以前的内容是