.net VS2008项目升级到VS2022完整教程
升级原因:vs2008工具太老旧,很多功能是没有的,连相同引用的字段高亮显示都没有!看得眼睛都花了!
对开发效率和开发人员来说,非常不利,平时开发很耗时间,决定升级到vs2022工具上去。
第一个错误:直接用vs2022打开vs2008的项目会打不开。
按照vs2022的提示,点确认升级即可,升级后能打开项目了,但是会有很多错误,我会在下面的解释中逐个击破。
第二个错误:
未能解析主引用“COM.Excel, Version=1.1.1606.17082, Culture=neutral”,因为它对框架程序集“Microsoft.VisualBasic.Compatibility, Version=7.0.3300.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”有间接依赖关系,而在当前目标框架中未能解析该程序集。“.NETFramework,Version=v3.5”。若要解决此问题,请移除引用“COM.Excel, Version=1.1.1606.17082, Culture=neutral”,或将应用程序的目标重新指向包含“Microsoft.VisualBasic.Compatibility, Version=7.0.3300.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”的框架版本。
第二个错误解决方式:将.NET Framework 3.5 目标框架改为 .NET Framework 4.8 或者 4点几的也可以,看你需要,反正都是升级,建议直接升到4.8 吧。
第三个错误,启动调试的时候遇到
检测到在集成的托管管道模式下不适用的 ASP.NET
system.web/identity@impersonate 设置为 true。
此应用程序在 system.web/httpModules 节中定义配置。
第三个错误解决方式:
1、将<validation validateIntegratedModeConfiguration="false" />设置为false
2、配置文件里设置为经典模式或者集成模式,注意,经典模式和集成模式的位置不一样,看图,我的项目是设置为经典模式。
第四个错误:
“/”应用程序中的服务器错误。
运行时错误
说明: 处理您的请求时发生异常。此外,对第一个异常执行自定义错误页时发生另一异常。已终止请求。
System.InvalidOperationException
HResult=0x80131509
Message=尝试加载 Oracle 客户端库时引发 BadImageFormatException。如果在安装 32 位 Oracle 客户端组件的情况下以 64 位模式运行,将出现此问题。
Source=<无法计算异常源>
StackTrace:
<无法计算异常堆栈跟踪>
内部异常 1:
BadImageFormatException: 试图加载格式不正确的程序。 (异常来自 HRESULT:0x8007000B)
第四个错误解决方式:
因为webconfig配置文件里写了错误重定向页面,导致它跳转到了 ApplicationErroy.aspx页面,将整个黄色报错页面给覆盖了,
所以先将这个关掉,再重新运行项目就可以看到浏览器显示所有的报错信息。
第五个错误:
没有找到 WebReferences引用,在资源管理器搜索一下这个Reference.cs,没有包含在项目中,包含一下,这个报错就消失了。
第六个错误:
在项目中有些方法会报错,因为之前的版本太低,需要改到高版本,修改一下方法,或者换成别的方法,将报错修复掉。
第七个错误:
System.InvalidOperationException
HResult=0x80131509
Message=尝试加载 Oracle 客户端库时引发 BadImageFormatException。如果在安装 32 位 Oracle 客户端组件的情况下以 64 位模式运行,将出现此问题。
Source=<无法计算异常源>
StackTrace:
<无法计算异常堆栈跟踪>
内部异常 1:
BadImageFormatException: 试图加载格式不正确的程序。 (异常来自 HRESULT:0x8007000B)
因为电脑的目标平台默认应该是X64位的,将每个类库和项目的目标平台都改为X86,不然你连网页都打不开,会显示空白页面什么都看不到。
将目标平台都改为X86就好了,一定要同时改,不然其中有一个引用的类库没有改,是会显示空白页面的。
第八个要点:
1、逐个类库和项目检查一下,引用是否生效,目标框架是否都改为了.NET Frameword 4.8 ,目标平台是否都改成了 X86,
一个一个类库去生成编译,看看单个类库有没有报错,如果有报错,就将该类库的错误解决掉。
2、所有的类库都可以编译通过了,再整个解决方案再编译一遍。如果没问题,基本上就差不多了。
3、再启动项目,看一下浏览器的显示有没有正常。
总结:开始我也觉得不太可能,vs2008的项目怎么升级到vs2022呢?基本上都要放弃了,
因为vs2008的开发工具太老了,开发起来很吃力。所以决定尝试升级,最终还是升级成功了,踩坑不易,点个赞吧。
很多事,觉得很难,实际上遇到问题,解决问题就是了。
还有一个,自己要懂得去搜资料,然后结合自己项目的实际情况去解决问题,
而不是一味的搬网上的答案过来,会很耗时间,有些时候,动一下脑子,转换一下思维,可能问题就解决了。
总耗时:大半天,自我感觉算快的了,有些项目升级可能搞个几天最后还都搞不定。自我评价:满意。