迁移Net项目为Net Core\Standard项目

背景
我们公司内部有自己ORM开发框架,最新因为需要将系统迁移到国产服务器上,所以首先需要将最基础的ORM框架改造可以运行在国产服务器上。对于我们Net来说,优选Net Core。在迁移的过程中,将一些经验和坑记录下来,帮助自己记忆同时也给有同样需求的Net朋友一些帮助。

原始项目 Beyonbit.Framework 预览


看上图的当前项目,为我们的ORM框架。本次迁移主要将Beyondbit.Framework项目从Net Framework 3.5 迁移为 Net Core\Standard 2.0。

新建一个Net Standard 类库为Beyonbit.Framework

新建的步骤很简单,就不截图说明。

为什么创建一个项目,而不是将现在的项目升级

几点考虑:

  1. 当前类库是一个非常稳定的类库
  2. 这个类库是一个历史类库,有非常多的功能,并且我不知道所有的功能
  3. 在将这个类库升级成功前,这个类库需要继续提供给Net Framework 项目使用
  4. 类库升级成功后,很有可能比不稳定,在稳定的这段期间,依然需要稳定的类库给Net Framework 使用
  5. 为什么不重新复制一份代码,在这个复制的代码上改造?当然首先我会建立一个分支。同时,基于以上原因,我希望的是同一份代码可以编译出Net Framework和Net Core\Standard类库

可以看看微软的建议《组织项目以支持 .NET Framework 和 .NET Core》

Net Standard和Net Core的关系

简单来将 Net Standard就是以前微软的共享类库的升级版,dll可以运行在WPF、ASP.NET、WinFrom、Silverlight、UWP的类库。
而Net Core生成的类库,依然只能运行在NetCore运行时上。
这个了解共享类库的概念会很好理解,不了解的话,可以看看其他同学写的文章。
linezero同学的《.NET Core 2.0及.NET Standard 2.0》
或微软的文章《.Net Core, .Net Framework, .Net standard library, Xamarin 之间关系》

移植现有代码到Net Core上

项目创建好了,如何将现在的类文件迁移到新项目上呢。可能有以下方案:

  1. 把所有文件复制到新项目上
  2. 把所有文件用快捷方式的办法添加到新项目上

在迁移这方面可以看看凌晨三点半同学的文章《迁移.net framework 工程到.net core》和《度量.net framework 迁移到.net core的工作量》

不过我的做法和凌晨三点半同学的不一样。我是在参看log4net的开源代码时,看到的思路,借鉴了这个更简单的方法。

使用文本编辑器打开新建项目的.csproj文件

我的项目内容如下:

<Project Sdk="Microsoft.NET.Sdk"><PropertyGroup><TargetFramework>netstandard2.0</TargetFramework></PropertyGroup>
</Project>

在文件中添加一下代码:

   <ItemGroup><Compile Include="..\..\Beyondbit.Framework\**\*.cs" /></ItemGroup>

这句代码的意思是,将Beyondbit.Framework目录下的所有文件和目录都用快捷方式包含到项目中。
效果如下:

可以看到新项目的文件和老项目的文件是一模一样的,并且图标可以看出是快捷方式添加的。

Build 当前项目

项目已经迁移OK了,我们可以Build一下项目,然后将所有错误消灭。
我的项目编译结果如下:

总共有60个错误。最后调整发现不止60个错误,当这60个错误处理后,再编译,产生了新的错误,加起来有100个错误左右。

总结
迁移第一步工作结束,后续第二部的工作是来消灭错误,第三部是迁移单元测试和集成测试项目,以及最终的多个平台运行的测试。

转载于:https://www.cnblogs.com/xakoy/p/8880206.html

将 Net 项目升级 Core项目经验:(一)迁移Net项目为Net Core\Standard项目相关推荐

  1. Vue2 大型项目升级 Vue3 详细经验总结

    前言 前段时间,公司准备在现有的 Vue2 项目中做一个聊天系统,但考虑开发聊天系统的周期并不短,客户又急需.于是准备对接腾讯的 IM 组件,来实现. 不知道的这里贴个官网: IM TUIKit 官方 ...

  2. Qt项目升级到Qt6经验总结(别人写的,仅作记录)

    这两篇文章是一样的,随便查看一个即可 ​​​​​​https://www.jb51.net/article/216758.htm 从QT4.QT5到QT6的版本移植总结_存于心,而非流于形.-CSDN ...

  3. 说一说实战项目升级从vue2到vue3 之main.js 区别

    相信很多人都对尤大口中的vue3蠢蠢欲动许久了,但是很多人就是一头雾水没法下手,不知道改怎么搞,或者怕项目升级报错什么的. 我自己的成功的把项目进行升级了,所以想简单记录一下. 简而言之首先就是版本嘛 ...

  4. ASP.NET Core 2.0 Web API项目升级到ASP.NET Core 3.0概要笔记

    本文结构 先决条件 升级目标框架(Target Framework)的版本 过时的IHostingEnvironment与IApplicationLifetime对象 Endpoint Routing ...

  5. WinForms项目升级.Net Core 3.0之后,没有WinForm设计器?

    目录 .NET Conf 2019 Window Forms 设计器 2019 9.23-9.25召开了 .NET Conf 2019 大会,大会宣布了 .Net Core 3.0 正式版.这两天我也 ...

  6. ASP.NET Core 实战:将 .NET Core 2.0 项目升级到 .NET Core 2.1

    一.前言  最近一两个星期,加班,然后回去后弄自己的博客,把自己的电脑从 Windows 10 改到 Ubuntu 18.10 又弄回 Windows 10,原本计划的学习 Vue 中生命周期的相关知 ...

  7. 迁移Net项目为Net Core\Standard项目

    背景: 我们公司内部有自己ORM开发框架,最新因为需要将系统迁移到国产服务器上,所以首先需要将最基础的ORM框架改造可以运行在国产服务器上.对于我们Net来说,优选Net Core.在迁移的过程中,将 ...

  8. 面试项目亮点_怎样在面试中更好地介绍自己的项目经验?

    前言 在面试时,经过寒暄后,一般面试官会让介绍项目经验 .常见的问法是,说下你最近的(或最拿得出手的)一个项目. 根据我们的面试经验,发现有不少候选人对此没准备,说起来磕磕巴巴,甚至有人说出项目经验从 ...

  9. C# 利用.NET 升级助手将.NET Framework项目升级为.NET 6

    概述 .NET6 正式版本已经发布有一阵子了,今天我就体验一下如何将.NET Framework的项目升级为.NET 6. 升级条件: Windows 操作系统 .NET 6 SDK Visual S ...

最新文章

  1. 微服务架构之「 服务注册 」
  2. 深度强化学习入门到精通--资料综述
  3. 【错误记录】PyCharm 运行 Python 程序报错 ( SyntaxError: Non-ASCII character ‘\xe5‘ in file x.py on line 1, but )
  4. OTA固件升级对于物联网设备的重要性
  5. UA OPTI570 量子力学32 参考系与绘景
  6. 都说dlib是人脸识别的神器,那到底能不能识破妖怪的伪装?
  7. Gartner的预言:通向混合IT之旅
  8. 今天1024程序猿节啦!一起穿格子衫上班吧
  9. LINUX警告:检测到时钟错误。您的创建可能是不完整的。-转
  10. POJ NOI0105-32 求分数序列和
  11. Codeforces Round #147 (Div. 2) E. Build String 最小费用最大流
  12. Python--itertools包--groupby使用(分类)
  13. 计算机电源管理器怎么打开,联想电源管理软件打不开怎么办
  14. Blender学习笔记(3)建模|blender
  15. python做游戏怎么实现窗口_pygame游戏之旅 创建游戏窗口界面
  16. 0527基于51单片机的防酒驾检测系统设计Proteus仿真
  17. mt4虚拟服务器账户无效,外汇登录显示无效账户怎么办?
  18. 拓扑排序:绿豆蛙的归宿
  19. AutoCAD 2010将不再安装VBA
  20. 成都有什么好的互联网公司推荐?

热门文章

  1. 【转】解决:ORA-19602: cannot backup or copy active file in NOARCHIVELOG mode
  2. php unlike,PHP结合jQuery实现的评论顶、踩功能
  3. python决策树算法代码_Python3.0 实现决策树算法的流程
  4. java 中和_java中的和=是什么意思
  5. 网工路由基础(5)ISIS协议
  6. 【教程】超详细的虚拟无线控制器安装教程
  7. Fluid 架构创新论文被国际数据库顶会 ICDE 录用
  8. 网易云音乐音视频算法的 Serverless 探索之路
  9. Apache Flink 1.10.0 发布 | 云原生生态周报 Vol. 38
  10. Java 并发编程-不懂原理多吃亏(送书福利)