背景
我们公司内部有自己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个错误左右。

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

原文地址 :http://www.cnblogs.com/xakoy/p/8880206.html

.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com

迁移Net项目为Net Core\Standard项目相关推荐

  1. 将 Net 项目升级 Core项目经验:(一)迁移Net项目为Net Core\Standard项目

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

  2. 修复迁移后Net Standard项目中的错误

    接上一章,项目编译结果如下: 解决依赖dll引用 在Net Framework项目的引用如下: 各引用和作用: log4net(1.10.0.0) 用于写框架日志 Castle.DynamicProx ...

  3. vs中如和根据项目生成类图_迁移WPF项目到.NET Core

    综述# .NET CORE 3.0开始,桌面端支持WPF了.很多.NET FRAMEWORK的项目已经跑了一阵子了,不是很有必要支持.NET CORE,不过最近用一个程序,为了贯彻一些C# 8的特性, ...

  4. 如何移植.NET Framework项目至.NET Core?

    公司的项目一直采用.NET框架来开发Web项目.目前基础类库均为.NET Framework 4.6.2版本.Caching, Logging,DependencyInjection,Configur ...

  5. Github上优秀的.NET Core开源项目的集合

    内容包括:库.工具.框架.模板引擎.身份认证.数据库.ORM框架.图片处理.文本处理.机器学习.日志.代码分析.教程等. Github地址:https://github.com/GeekPowerFe ...

  6. ABP Vnext 4.4:统一Ef Core的DbContext/移除EF Core Migrations项目

    Abp vnext 4.4出现了一个比较重大的变更:在Startup template中移除了EF Core Migrations项目,本文翻译自community.abp.io/articl 由于本 ...

  7. ABP Framework:移除 EF Core Migrations 项目,统一数据上下文

    原文:Unifying DbContexts for EF Core / Removing the EF Core Migrations Project[1] 导读:软件开发的一切都需要平衡 在 AB ...

  8. 将 .NET Framework 项目转换为 .NET Standard 项目

    将 .NET Framework 项目转换为 .NET Standard 项目 独立观察员 2020 年 8 月 20 日 如今 .NET Core 是未来发展的主流(至少在 .NET 5 发布之前) ...

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

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

最新文章

  1. 【PHP+JS】uploadify3.2 和 Ueditor 修改上传文件 大小!!
  2. 六个iPhone6不会火爆的理由
  3. SAP C4C的一个错误消息 - Security token does not match
  4. mysql 查询商品列表 显示tag_让前台页面商品列表显示后台数据库中的商品
  5. 基于Python3-Pygame的植物大战僵尸小游戏
  6. WordPress图片插件:Auto Highslide修改版(转)
  7. 下载网页或者微信公众号中视频的方法详细介绍
  8. sharepoint文件夹本地同步_DIY游戏云存档 - 单机游戏存档多机异地同步方案
  9. JAVA--多线程管理
  10. 数据分享和开源软件有助于对抗新型冠状肺炎,开源布道师等;开源之道每周评论2020 03 16...
  11. 基于tensorflow的个性化电影推荐系统实战
  12. aspnet172海派电影视频点播分享影评网站
  13. 2018校招携程测评,赞RP
  14. 让你秒懂的Lambda表达式超级详细讲解
  15. 在matlab中,利用for循环来生成一个矩阵,并分别对该矩阵的行和列进行求和
  16. windows 查看端口
  17. macbook上好用的软件
  18. (98)Address already in use: AH00072: make_sock: could not bind to address [::]:80
  19. 类似 marquee 的图片左右滑动且无缝对接
  20. 详解正则表达式匹配一个反斜杠\的问题

热门文章

  1. 十年老站吐血迁移实录
  2. css 中图片旋转,倾斜,位移,平滑
  3. c++变量的作用域、生存期和可见性
  4. 系统集成相关岗位理解
  5. Ubuntu 12.04 x64 下安装 GStreamer+FFmpeg+Opencv
  6. Redis学习手册(String数据类型)
  7. 【招聘(北京武汉)】北京高远华信科技 .NET 高级工程师
  8. Windows 11 预览版 Build 22000.120 发布
  9. 让 Hangfire 使用 MongoDB 存储
  10. 初识ABP vNext(10):ABP设置管理