从 .net 1.1 升级到 2.0过程中遇到的问题及解决方法

 

1.11-1.12日,将一个用vs2003编写的解决方案(windows form)升级到.net2.0。升级的过程比较顺利,基本没有出现编译错误(不过有一堆警告),但是运行的时候出了不少问题,以下节选其中比较典型的几个。

1.     vs2005无法启动调试

1)     症状

vs2005启动调试失败,弹出错误提示:Error while trying to run project: Unable to start debugging. 绑定句柄无效。

2)     原因

Terminal Services 被禁用。

3)     解决办法

l         打开项目属性,在“Debug”一项里,把“Enable the Visual Studio hosting process”前的钩去掉。

l         打开计算机管理,在服务里将“Terminal Services”改成Manual,或者直接启动此服务。

 

2.     打开窗口时出错

1)     症状

打开窗体时,发生类型为 System.Resouces.MissingMainfestResourceException的异常。异常信息为:Could not find any resources appropriate for the specified culture or the neutralculture……

2)     原因

发生错误的语句为:
      this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));

因此初步判断为在项目转换的时候 资源文件内容丢失

3)     解决办法

打开窗体设计器,重新设置应用程序的Icon

 

3.     发生类型为ThreadStateException的异常

1)     症状

执行线称操作时发生类型为ThreadStateException的异常,异常信息为 The thread is dead.State can not be accessed。程序在fx1.1里编译运行不会出现此错误。

2)     原因

发生错误的语句段如下:

refreshThread = new Thread(new ThreadStart(BeginRefresh));

refreshThread.Start();

refreshThread.IsBackground = true; // -- 错误发生在这句

因此判断为在设置IsBackground属性时refreshThread已经完成了任务

3)     解决办法

修改语句的顺序为如下:

refreshThread = new Thread(new ThreadStart(BeginRefresh));

refreshThread.IsBackground = true;

refreshThread.Start();

 

4.     短消息客户端不能接收消息

1)     症状

客户端的TcpListener不能接收到WebServiceSocket连接请求,也无法接收短消息。

2)     原因

经过调试发现,客户端登陆时,从服务器获得的客户端IP127.0.0.1。经过检查后得知:由于vs 2005的配置文件使用方式改变,导致WebService引用没有能够通过动态的URL Behavier获取到正确的WebServices路径:http://ip/service.asmx,而是沿用了静态值:http://localhost/service.asmx,因此注册用户信息的时候,把用户的IP注册成了127.0.0.1,而这个IP是无法接受Socket连接的。这是一个很难发觉的问题,不过还是被我揪出来了,呵呵。

3)     解决办法

将配置文件调整为vs2005默认的方式。将各个组建的app.config 文件中生成的<applicationSettings>节和<section>的内容合并到主项目(exe文件所在的项目)的app.config中。

5.     COM调用失败

1)     症状

调用COM时出现类型为System.IO.FileNotFoundException,异常信息为:Retrieving the COM class factory for compnent with CLSID {000209FF-…} failed due to the following error:8001007e

2)     原因

出错的代码为:

Word.Application wordApp = new Word.ApplicationClass();

Word.dll已经存在于应用程序目录下。

造成这种情况的原因是注册表中的Ofiice COM 相关的项丢失或者被破坏。

3)     解决办法

重装Ofiice 2003

 

6.     WordAddIn的工具栏不显示

1)     症状

升级以后在某些机器上安装客户端以后 WordAddIn的工具栏无法加载(不显示)。这种情况尤其喜欢出现在没有安装 vs 2005 的机器上。

2)     原因

DotNet2.0 1.1有某些变化,部分跟Office开发相关的dll默认不会复制到GAC里面。而WordAddIn需要调用这些dll,导致失败。而这些dll会在安装vs2005的时候拷贝到目标机器上。

3)     解决办法

在安装AddIn前,确保先安装 vstorMicrosoft visual studio 2005 tools for office 运行库 ),可以在网上找到这个vstor.exe文件,没有的人可以找我要

7.     打包 .Net Framework 2.0到应用中

1)     方法

选中安装项目〉〉右键〉〉属性

弹出对话框

点击 Prerequisties 按钮,在组建选择框中选中 .Net Framework 2.0 ,并在下面的路径选项中选择 第二个:from the same location as my application。确认。

重新生成安装项目。

posted @ 2006-01-12 18:22  quitgame  阅读(6511)  评论(16编辑  收藏  举报