将 Net 项目升级 Core项目经验:(一)迁移Net项目为Net Core\Standard项目
迁移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文件
我的项目内容如下:
<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个错误左右。
总结:
迁移第一步工作结束,后续第二部的工作是来消灭错误,第三部是迁移单元测试和集成测试项目,以及最终的多个平台运行的测试。
将 Net 项目升级 Core项目经验:(一)迁移Net项目为Net Core\Standard项目的更多相关文章
- NET MVC1项目升级到MVC2最简单的方法
NET MVC1项目升级到MVC2最简单的方法 把MVC1项目升级到MVC2,最简单的做法如下: 新建MVC2项目 新建一个MVC2项目,把原来MVC1的项目文件全部拷贝到新建MVC2项目目录里,依照 ...
- 将 Net 项目升级 Core项目经验:(二)修复迁移后Net Standard项目中的错误
修复迁移后Net Standard项目中的错误 接上一章,项目编译结果如下: 解决依赖dll引用 在Net Framework项目的引用如下: 各引用和作用: log4net(1.10.0.0) 用于 ...
- 将 Net 项目升级 Core项目经验:(三)迁移后的Net Standard版本的类库测试和多平台项目实测
迁移后的Net Standard版本的类库测试和多平台项目实测 按照第一步的方法,添加一个Net Core的MSTest项目,然后将原来的测试项目下的代码迁移到新测试 项目中,然后引用新的Beyond ...
- ASP.NET Core 实战:将 .NET Core 2.0 项目升级到 .NET Core 2.1
一.前言 最近一两个星期,加班,然后回去后弄自己的博客,把自己的电脑从 Windows 10 改到 Ubuntu 18.10 又弄回 Windows 10,原本计划的学习 Vue 中生命周期的相关知 ...
- dotnet core项目升级到 .net core 2.0
这几天无疑我们已经让.net core 2.0正式版发布的消息刷屏,这次发布整整提前了一个月的时间,关于具体的发布信息,可以去看善友大神的博客,.NET Core 2.0 正式发布信息汇总,废话不多说 ...
- WinForms项目升级.Net Core 3.0之后,没有WinForm设计器?
目录 .NET Conf 2019 Window Forms 设计器 .NET Conf 2019 2019 9.23-9.25召开了 .NET Conf 2019 大会,大会宣布了 .Net Cor ...
- Webpack + Vue 多页面项目升级 Webpack 4 以及打包优化
0. 前言 早在 2016 年我就发布过一篇关于在多页面下使用 Webpack + Vue 的配置的文章,当时也是我在做自己一个个人项目时遇到的配置问题,想到别人也可能遇到跟我同样的问题,就把配置的思 ...
- 将arcEngine9.3和dev9.2.4开发的项目升级成arcObject10.2和dev15.1.3过程中遇到的问题和解决
好久没碰.net了,arcgis更是感觉都忘干净了,今天将arcEngine9.3和dev9.2.4开发的一个项目升级成arcObject10.2和dev15.1.3过程中遇到了一系问题,留个笔记,留 ...
- C# 利用.NET 升级助手将.NET Framework项目升级为.NET 6
概述 .NET6 正式版本已经发布有一阵子了,今天我就体验一下如何将.NET Framework的项目升级为.NET 6. 升级条件: Windows 操作系统 .NET 6 SDK Visual ...
随机推荐
- 听翁恺老师mooc笔记(12)--结构中的结构
结构数组: 和C语言中的int,double一样,一旦我们做出一个结构类型,就可以定义这个结构类型的变量,也可以定义这个结构类型的数组.比如下面这个例子: struct date dates[100] ...
- 微信小程序测试总结
概述 由于项目中,微信前端和后端对接出现错误.所以Alpha测试分为微信小程序前端,管理员web测试. 测试工具选择 微信小程序的前端使用微信小程序开发工具测试. 管理员web使用web测试. 测试工 ...
- xcode7,ios9 部分兼容设置
神奇的苹果公司,再一次让程序员中枪. 一.xcode7 新建的项目,Foundation下默认所有http请求都被改为https请求. HTTP+SSL/TLS+TCP = HTTPS 也就是说,服务 ...
- mysql基础篇 - SELECT 语句详解
基础篇 - SELECT 语句详解 SELECT语句详解 一.实验简介 SQL 中最常用的 SELECT 语句,用来在表中选取数据,本节实验中将通过一系列的动手操作详细学习 SELEC ...
- Flask 页面缓存逻辑,jinja2 过滤器,测试器
回调接入点-页面缓存逻辑 from flask import Flask,request,render_template from werkzeug.contrib.cache import Simp ...
- highcharts 具体参数详解
<script type="text/javascript" src="js/jquery.min.js"></script> < ...
- 超绚丽CSS3多色彩发光立方体旋转动画
CSS3添加了几个动画效果的属性,通过设置这些属性,可以做出一些简单的动画效果而不需要再去借助JavaScript.css3动画的属性主要分为三类:transform.transition以及anim ...
- sublime安装 和 插件安装
先从官网下载sublime https://www.sublimetext.com/3 安装完毕后 快捷键ctrl+` 或者View->Show Console,输入如下代码(sublime ...
- slf4j 与 log4j2 基本用法
简单的说 log4j2 是log4j2的升级版,解决了部分性能问题和部分死锁问题,其使用方式与使用配置与log4j相同. 建议使用maven依赖直接使用log4j2 <dependency> ...
- JAVA_SE基础——64.StringBuffer类 ①
字符串特点:字符串是常量:它们的值在创建之后不能更改 字符串的内容一旦发生了变化,那么马上会创建一个新的对象. 注意:字符串的内容不适宜频繁修改,因为一旦修改马上就会创建一个新的对象. publ ...