从 .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 @   quitgame  阅读(6515)  评论(16编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述
点击右上角即可分享
微信分享提示