首页 > 其他分享 >.netframework迁移到.netcore方法

.netframework迁移到.netcore方法

时间:2023-10-12 14:11:45浏览次数:42  
标签:文件 netframework 工程 netcore netcore5.0 SqlDemo 迁移

一 .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.复制以下文件到项目文件中
<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>WinExe</OutputType>
    <TargetFramework>net5.0-windows</TargetFramework>
    <UseWindowsForms>true</UseWindowsForms>
    <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
  </PropertyGroup>
</Project>

上述的XML文件给出了工程文件project的基本结构,但是他并没有包含旧工程文件中的工程名相关的信息,因此需要拷贝旧工程文件下的RootNamespaceAssemblyName所在标签中的行的内容(比如我这里面的SqlDemo工程)

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>WinExe</OutputType>
    <TargetFramework>net5.0-windows</TargetFramework>
    <UseWindowsForms>true</UseWindowsForms>
    <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
    <!--工程名相关的信息-->
    <RootNamespace>SqlDemo</RootNamespace>
    <AssemblyName>SqlDemo</AssemblyName>
  </PropertyGroup>
</Project>

3.复制旧工程中 < ItemGroup > 下包含 < ProjectReference > or < PackageReference > 到 < PropertyGroup > 到新工程的下的 < ItemGroup >(位于< PropertyGroup >后面),并且可以移除旧版本中的< project >和 < name >标签

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>WinExe</OutputType>
    <TargetFramework>net5.0-windows</TargetFramework>
    <UseWindowsForms>true</UseWindowsForms>
    <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
    <!--工程名相关的信息-->
    <RootNamespace>SqlDemo</RootNamespace>
    <AssemblyName>SqlDemo</AssemblyName>
  </PropertyGroup>
  
    <ItemGroup>
       <!--包含另外一个工程的路径,移除旧版本中的<project>和<name>标签-->
      <ProjectReference Include="..\SqlDataSetLib\SqlDataSetLib.csproj"/>
    </ItemGroup>
    <ItemGroup>
    <!--引用的Nuget包名或者某个外部程序集以及填写版本号,不支持的程序集不要引进来-->
      <PackageReference Include="Microsoft.EntityFrameworkCore">
         <Version>3.1.4</Version>
      </PackageReference>
   </ItemGroup>
   
</Project>
4.复制旧版本中的资源和设置项标签

旧版本中如果有设置项的资源,如下面所示的这样,直接把include改为Update加入到新工程中

<ItemGroup>
<!--设置文件-->
  <None Update="Properties\Settings.settings">
    <Generator>SettingsSingleFileGenerator</Generator>
    <LastGenOutput>Settings.Designer.cs</LastGenOutput>
  </None>
  <Compile Update="Properties\Settings.Designer.cs">
    <AutoGen>True</AutoGen>
    <DependentUpon>Settings.settings</DependentUpon>
    <DesignTimeSharedInput>True</DesignTimeSharedInput>
  </Compile>
</ItemGroup>

复制资源文件,同理,把资源文件的include替换成Update即可

<ItemGroup>
  <EmbeddedResource Update="Properties\Resources.resx">
    <Generator>ResXFileCodeGenerator</Generator>
    <LastGenOutput>Resources.Designer.cs</LastGenOutput>
  </EmbeddedResource>
  <Compile Update="Properties\Resources.Designer.cs">
    <AutoGen>True</AutoGen>
    <DependentUpon>Resources.resx</DependentUpon>
    <DesignTime>True</DesignTime>
  </Compile>
</ItemGroup>

最后把保存编辑的.csproj文件,然后点击重新加载项目,即可迁移到.net5.0.


作者:「一点几_ZK」

标签:文件,netframework,工程,netcore,netcore5.0,SqlDemo,迁移
From: https://www.cnblogs.com/88223100/p/netframework-to-netcore.html

相关文章

  • dhcp服务器迁移---从windows server 2003到windows server 2012
    近期,工作中接触到dhcp服务器的迁移。搜索了网上的一些解决方案,很详细。以下主要是碰到的一些问题以及解决方案。由于2003的版本太老,导出来的配置文件为古老的mdb格式,而导入到2012中的格式需要为txt。 在2003中,尝试用命令(网上可找到)导出来txt格式,但是公司那台服务器实现不了......
  • Discuz! X3.5 从windows到windows的迁移
    适用场景Discuz!X3.5windows到windows的迁移,本例2016至2019准备安装IIS,安装应用程序开发,安装cgiisapi扩展isapi筛选器把之前的PHP文件夹拷到同目录下,避免版本问题和重新配置IIS,服务器节点,处理程序映射,添加模块映射 *.php FastCgiModule C:\PHP\php-cgi.exe未完待......
  • luffy前端配置,跨域问题,后端数据库迁移, 后台主页功能,后台管理
    1luffy前端配置......
  • NAS之间docker无损数据怎么迁移,无需代码操作,简简单单。
    情况:你一定遇到过这么一个棘手的问题,在群晖上自己配置或者是请人配置的docker应用,想换群晖或者转移应用一定想知道怎么样才能无损迁移docker应用。我也比较爱折腾,docker通常也设置好了。一但换了机器docker迁移就很麻烦,文档资料倒是可以复制过去就行,docker不能直接复制,复制后会......
  • luffy前端配置、跨域问题、后端数据库迁移、后台主页功能、轮播图表、后台管理
    luffy前端配置再在vue中使用时,就不需要导入,直接使用this.$,,,就可以了1、跟后端交互:axioscnpminstall-Saxios以后想发送ajax请求,必须导入,使用可以把axios放到vue实例中,以后任意组件中 this.$axios.get()main.js中加入importaxiosfrom'axios' Vue.prot......
  • luffy前端配置、跨域问题、后端数据库迁移、后台主页功能、后台管理
    luffy前端配置#1跟后端交互:axioscnpminstall-Saxios以后想发送ajax请求,必须导入,使用可以把axios放到vue实例中,以后任意组件中this.$axios.get()main.js中加入importaxiosfrom'axios'Vue.prototype.$axios=axios;#2操作cookie:vue......
  • Typecho博客网站迁移:MySQL ➡️ MarialDB
    目录1.引言2.Typecho的自定义配置迁移3.数据库迁移:MySQL->MarialDB3.1在原服务器中备份并导出数据库文件3.2将“backupdb.sql”文件拷贝至新服务器并导入数据4.Nginx配置5.Handsome主题操作1.引言由于服务、价格等因素更换云服务器是很常见的情况,本文记录了Typecho博......
  • NetCore Ocelot 之 Cache
    OcelotsupportssomeveryrudimentarycachingatthemomentproviderbytheCacheManagerproject.Thissanamazingprojectthatissolvingalotofcachingproblems.IwouldrecommendusingthispackagetocachewithOcelot.Thefollowingexampleshowsh......
  • Archlinux 系统迁移
    1.网络环境下见https://bbs.archlinuxcn.org/viewtopic.php?id=4611没有试过2.硬盘间路径切换到/下,使用pigz打包archlinuxsudotar--use-compress-program=pigz-cvpfarch-backup.tgz--exclude=/proc--exclude=/lost+found--exclude=/arch-backup.tgz--exclude=/m......
  • NetCore Ocelot 之 Authorization
    Ocelotsupportsclaimsbasedauthorizationwhichisrunpostauthentication.ThismeansifouhavearouteyouwanttoauthorizeyoucanaddthefollowingtoyouRouteconfiguration."RouteClaimsRequirement":{"client_role":......