迁移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

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

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

几点考虑:

当前类库是一个非常稳定的类库

这个类库是一个历史类库,有非常多的功能,并且我不知道所有的功能

在将这个类库升级成功前,这个类库需要继续提供给Net Framework 项目使用

类库升级成功后,很有可能比不稳定,在稳定的这段期间,依然需要稳定的类库给Net Framework 使用

为什么不重新复制一份代码,在这个复制的代码上改造?当然首先我会建立一个分支。同时,基于以上原因,我希望的是同一份代码可以编译出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上

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

把所有文件复制到新项目上

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

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

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

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

我的项目内容如下:

在文件中添加一下代码:

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

效果如下:

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

Build 当前项目

项目已经迁移OK了,我们可以Build一下项目,然后将所有错误消灭。

我的项目编译结果如下:

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

总结

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

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

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180423B05SIL00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券