翼度科技»论坛 编程开发 .net 查看内容

.netframework迁移到.netcore方法

6

主题

6

帖子

18

积分

新手上路

Rank: 1

积分
18

一 .netframework程序迁移到.netcore5.0
对于.netframwork程序想要升级为.netcore5.0的方法,微软官方也给出了方法见https://docs.microsoft.com/en-us/dotnet/desktop/winforms/migration/?view=netdesktop-5.0,我这里总结记录一下.
1.首先要检查自己应用程序适不适合迁移
.netframework框架和.netcore框架有很大的不同,首先得确保自己当前基于.netframework程序迁移到.netcore上要改变哪些东西。下载迁移分析工具NET Portability Analyzer ,这个可以到visual Studio的管理扩展中进行下载,这个分析工具的作用就是告诉我们,从当前版本升级到.netcore5.0版本,你的程序需要改变的库或者是Nuget包,因为升级后.netcore程序可能不支持以前的的Nuget包或者库.

安装完成后,先要进行迁移框架的选择,比如我先迁移到.netcore5.0上面去

配置目标框架

开始对工程开始进行升级前分析

分析完成后会有生成的报告结果

分析和解释分析报告
Portability Summary

Details(分析细节部分)

细节分析罗列了在目标框架下会确实的API函数
Target type: 目标平台下缺失的API
Target member:目标平台下缺失的方法
Assembly name:.NET Framework下存在已经缺失的API
Missing Assemblies(缺失的程序集)
比如我这里的EntityFramework.dll,这个程序集只支持.netframework4.8的,在.netcore5.0下面是不受支持的,所以报告中会显示出这一项,但是在net5.0下可以用Microsoft.EntityFrameworkCore
下替换,因此还是可以进行迁移。

2.修改项目的工程文件(.csproj)

net5使用sdk风格的项目文件,不会加载net Framework使用的Visual Studio项目文件,因此需要修改工程文件.
2.1首先,在解决方案中要迁移的工程项目进行卸载,然后对项目文件进行编辑



把项目文件中的内容都剪切到别的地方(之后还有用)
2.复制以下文件到项目文件中
  1. <Project Sdk="Microsoft.NET.Sdk">
  2.   <PropertyGroup>
  3.     <OutputType>WinExe</OutputType>
  4.     <TargetFramework>net5.0-windows</TargetFramework>
  5.     <UseWindowsForms>true</UseWindowsForms>
  6.     <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
  7.   </PropertyGroup>
  8. </Project>
复制代码
上述的XML文件给出了工程文件project的基本结构,但是他并没有包含旧工程文件中的工程名相关的信息,因此需要拷贝旧工程文件下的RootNamespaceAssemblyName所在标签中的行的内容(比如我这里面的SqlDemo工程)
  1. <Project Sdk="Microsoft.NET.Sdk">
  2.   <PropertyGroup>
  3.     <OutputType>WinExe</OutputType>
  4.     <TargetFramework>net5.0-windows</TargetFramework>
  5.     <UseWindowsForms>true</UseWindowsForms>
  6.     <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
  7.   </PropertyGroup>
  8. </Project>      SqlDemo    SqlDemo  
复制代码
3.复制旧工程中 < ItemGroup > 下包含 < ProjectReference > or < PackageReference > 到 < PropertyGroup > 到新工程的下的 < ItemGroup >(位于< PropertyGroup >后面),并且可以移除旧版本中的< project >和 < name >标签
  1. <Project Sdk="Microsoft.NET.Sdk">
  2.   <PropertyGroup>
  3.     <OutputType>WinExe</OutputType>
  4.     <TargetFramework>net5.0-windows</TargetFramework>
  5.     <UseWindowsForms>true</UseWindowsForms>
  6.     <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
  7.   </PropertyGroup>
  8. </Project>      SqlDemo    SqlDemo                                                3.1.4            
复制代码
4.复制旧版本中的资源和设置项标签

旧版本中如果有设置项的资源,如下面所示的这样,直接把include改为Update加入到新工程中
  1. <ItemGroup>
  2.   <None Update="Properties\Settings.settings">
  3.     <Generator>SettingsSingleFileGenerator</Generator>
  4.     <LastGenOutput>Settings.Designer.cs</LastGenOutput>
  5.   </None>
  6.   <Compile Update="Properties\Settings.Designer.cs">
  7.     <AutoGen>True</AutoGen>
  8.     <DependentUpon>Settings.settings</DependentUpon>
  9.     <DesignTimeSharedInput>True</DesignTimeSharedInput>
  10.   </Compile>
  11. </ItemGroup>
复制代码
复制资源文件,同理,把资源文件的include替换成Update即可
  1. <ItemGroup>
  2.   <EmbeddedResource Update="Properties\Resources.resx">
  3.     <Generator>ResXFileCodeGenerator</Generator>
  4.     <LastGenOutput>Resources.Designer.cs</LastGenOutput>
  5.   </EmbeddedResource>
  6.   <Compile Update="Properties\Resources.Designer.cs">
  7.     <AutoGen>True</AutoGen>
  8.     <DependentUpon>Resources.resx</DependentUpon>
  9.     <DesignTime>True</DesignTime>
  10.   </Compile>
  11. </ItemGroup>
复制代码
最后把保存编辑的.csproj文件,然后点击重新加载项目,即可迁移到.net5.0.

作者:「一点几_ZK」



来源:https://www.cnblogs.com/88223100/archive/2023/10/12/netframework-to-netcore.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具