闲话几句:

自从上周开始,IOS人员逝去,就开始接手IOS的代码了。

并开始整理IOS的代码(包括当时一开始设计的开发框架)。

在未来不远的日子里,设想是有一个系列详细的介绍I恋App和IT连App及前后端所有涉及的技术系列。

同时还准备发布一个IOS的开发框架,为十二星座再凑一个成员。

闲话结束,下面看正文:

CYQ.Data 支持DotNet Coe 的折腾过程:

大约是上周五,在提交CYQ.Data V5.5.8.1版本到Nuget后,看着C盘还有7G发了一会呆。

之后做了一个决定,卸载了VS2015,现在C盘有10个G。

到了微软官网,下载了社区版,把VS2017给装上了,好在可以选组件,只挑.NET Core 相关的,5个多G就完事。

安装好之后,建一个类库工程,把整套源码Copy过去,依赖项就是我们平时引用dll的地方:

开始编绎,并见证奇迹:一堆错误。

还好,VS2017在错误提示方面很人性化,分批给你显示错误数,让你解决一批再出来一批。

不像当初在VS2015折腾.NET Core 1.1的时候,一下子出来几百个错误,梁静如都救不了你。

面对错误:怎么处理、支持Dotnet Core ?

折腾.NET Core 1.1的时候:

那时候是把CYQ.Data的源码给重构整理了一次,把不支持的都单独给抽离出来。

像这样,比如那时候不支持序列化,就把涉及序列化的都抽出来放到一个文件:

通常一个类,会分拆出几个partial的部分类(不支持的用于被排除)

想法挺好:

通过排除某些文件夹的方式,来达到切换的状态,这样可以不用维护两份代码。

但是:

要达到去掉文件夹还能编绎完整通过的解O方式,由于有些是强关系,关是业务整理,工作量大的出奇。

一些代码还得修改为反射的动态调用,才能达到分离文件也正常,好不麻烦。

关键还是那时候的版本缺失的类库太多,折腾没几天,放下了,回头才是岸。

折腾.NET Core 2.0:

1:想过针对性的写一个迷你版本。

但没那么简单,要有激情,要有大量时间,这些条件要同时满足不容易。

同时意味着又多一个要维护的框架,虽然我维护中的框架已数不过来,多一个也不算多。

可时间对于认真的人,总是不够用啊!!!

2:通过增量方式,解决版本支持问题

上面说到,折腾 .NET Core 1.1 时,是想通过减量排除来解决问题,结果不得其门。

事情放一放,一回头,解决问题的方式,就是来的那么巧,那么妙。

这回很理所当然的,就想到用增量的方式来解决问题。

CYQ.Data 如何通过增量代码支持.NET Core

对于每一个提示不存在的类,VS环境中鼠标放上去时,都会有一个提示重构,通过它可以减少不少工作量。

1:为每一个不支持的类、方法、或属性,都用重构的方式,重新生成一个类文件,并用对应的名称空间整理放好。

通过这种方式,整理出不支持有差异化的类库,而且也可以清楚知道,框架里引用了哪些类是 .NET Core所没有的。

然后先顺利编绎通过。

2:重写新建类库的实现,比如,重写读配置文件:

using CYQ.Data;
using System.IO;
using CYQ.Data.Tool;
using System.Collections.Specialized; namespace System.Configuration
{
internal class ConfigurationManager
{
static string appSettingJson = string.Empty;
static ConfigurationManager()
{
string filePath = AppConfig.WebRootPath + "appsettings.json";
if (System.IO.File.Exists(filePath))
{
appSettingJson = File.ReadAllText(filePath, Text.Encoding.UTF8);
if (!string.IsNullOrEmpty(appSettingJson))
{
appSettingJson = appSettingJson.Replace("\\\\", "\\");
}
}
}
private static NameValueCollection _AppSettings;
public static NameValueCollection AppSettings
{
get
{
if (_AppSettings == null && !string.IsNullOrEmpty(appSettingJson))
{
string settingValue = JsonHelper.GetValue(appSettingJson, "appsettings");
if (!string.IsNullOrEmpty(settingValue))
{
_AppSettings = JsonHelper.ToEntity<NameValueCollection>(settingValue);
}
}
if (_AppSettings == null)
{
return new NameValueCollection();
}
return _AppSettings;
}
}
private static ConnectionStringSettingsCollection _ConnectionStrings;
public static ConnectionStringSettingsCollection ConnectionStrings
{
get
{
if (_ConnectionStrings == null)
{
_ConnectionStrings = new ConnectionStringSettingsCollection();
if (!string.IsNullOrEmpty(appSettingJson))
{
string settingValue = JsonHelper.GetValue(appSettingJson, "connectionStrings");
if (!string.IsNullOrEmpty(settingValue))
{
NameValueCollection nv = JsonHelper.ToEntity<NameValueCollection>(settingValue);
if (nv != null && nv.Count > 0)
{
foreach (string key in nv.Keys)
{
ConnectionStringSettings cs = new ConnectionStringSettings();
cs.Name = key;
cs.ConnectionString = nv[key];
_ConnectionStrings.Add(cs);
}
} }
}
} return _ConnectionStrings;
}
}
}
}  

配置文件和System.Web这两个是经常用到的东西。

相对配置文件的读取,System.Web的,麻烦了一些,需要Nuget上引用Microsoft.AspNetCore:

引用好后,再重写里面的内容,具体的内容,这里就不贴代码了,代码可以见源码处。

由于这周末两天临时集中处理,刚处理好,只做了简单的MSSQL的测试。

所以来不及发布Nuget上,先写文了,等哪天测试稳定了再上Nuget。

CYQ.Data 支持.NET Core 的方法:

1:GitHub下载CYQ.Data的源码(会发现多了一个文件夹)

地址:https://github.com/cyq1162/cyqdata

由于目前还没提交解决方案文件可以直接运行项目,所以现在提前提前体验的需要自己建类库项目了:

2:自己新建一个类库项目,取名叫CYQ.Data,把源码都Copy过去(包括DotNetCore)

3:Nuget上引用Microsoft.AspNetCore。

编绎,然后就大功告成了,在你的.NET Core 项目里引用类库项目就可以了。

如果涉及到Web,还需要有两个注入的地方:

在MVC项目中调用app.UseStaticHttpContext()。

        public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
app.UseStaticHttpContext();
.....
}
在没有注入 HttpContextAccessor的项目中,还需在ConfigureServices 方法中调用
services.AddHttpContextAccessor();

总结:

一个周末,一个巧合,一个连续的激情奋战。

CYQ.Data 的.NET Core支持工作,就这样告一段落了。

测试了MSSQL是基本通过,剩下的都好说了!!!

后面Taurus.MVC还是Aries,估计离支持.NET Core也不远了。

不过,接下来,又要进入IT连创业的状态了。

对于IT连,结合一些网友的建议,最近也有不少思考。

对接下来的产品优化及走向,又一波伤脑估计是在所难免。

另外,运营还缺的一篇文章,回头也还得补上。

最后的最后,仍是感谢大伙的关注!!!

CYQ.Data 正式支持 DotNET Core 版本发布的更多相关文章

  1. 如何将dotnet core webapi发布到docker中…

    如何将dotnet core webapi发布到docker中 今天想起来撸一下docker,中途还是遇到些问题,但是这些问题都是由于路径什么的导致不正确,在这儿还是记录下操作过程,今天是基于wind ...

  2. 2017-03-04 dotnet core网站发布到Linux系统中

    今天开始学习dotnet core的开发,距离Visual Stuio 2017正式版的发布,也就是VS20周岁的生日还有三天,在我的电脑上安装的是VS2017 Enterprise RC版, 在VS ...

  3. 如何查看自己电脑支持OpenGL core版本

    1. 起因: 红宝书上的例子在电脑上运行后没有效果,但是怎么也找不到原因,反复对看了书上的源码和代码发现没有任何问题,但是就是没有树上写的效果 2. 思路:查看函数的说明,这里推荐使用docs.gl, ...

  4. HMS Core版本发布公告

    新增动作捕捉能力.通过简单拍摄即可获得人体3D骨骼关键点数据,广泛应用于虚拟形象.体育运动和医学分析等场景: 3D物体建模能力iOS版本上线. 查看详情>> 新增道路吸附能力.可根据坐标点 ...

  5. [尝鲜]妈妈再也不用担心 dotnet core 程序发布了: .NET Core Global Tools

    什么是 .NET Core Global Tools? Global Tools是.NET Core 2.1 中一个初次出现的特性.Global Tools提供了一种方法,让开发人员编写的.NET C ...

  6. dotnet core webapi 发布部署到docker的步骤

    1. 创建web api项目,编译并测试成功 2. 在项目的根目录添加Dockerfile文件,注意:Dockerfile文件名区分大小写 文件内容如下 # 基于microsoft/dotnet:la ...

  7. CYQ.Data 支持 PostgreSQL 数据库

    前言: 很久之前,就有同学问我CYQ.Data能不能支持下PostgreSQL,之后小做了下调查,发现这个数据库用的人少,加上各种因素,就一直没动手. 前两天,不小心看了一下Github上的消息: 看 ...

  8. dotnet core 通过 frp 发布自己的网站

    很多时候写出来的网站只能自己内网访问,本文告诉大家如何通过 Frp 将自己的 asp dotnet core 网站发布到外网,让小伙伴访问自己的网站 通过 frp 的方式,可以解决自己的服务器性能太差 ...

  9. 号外号外!WPF界面开发者福音,DevExpress支持.NET Core 3.0!

    通过DevExpress WPF Controls,你能创建有着强大互动功能的XAML基础应用程序,这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案. 无论是Office办公软件的衍 ...

随机推荐

  1. RabbitMQ 笔记-Exchanges

    Procuder Publish的Message进入了Exchange.接着通过"routing keys", RabbitMQ会找到应该把这个Message放到哪个queue里. ...

  2. js math对象总结

    1:  Math 对象用于执行数学任务. 2:Math 对象并不像 Date 和 String 那样是对象的类,因此没有构造函数 Math(), Math.sin() 这样的函数只是函数 3:通过把 ...

  3. Vue 国际化 vue-i18n 用法详解

    vue-i18n 仓库地址:https://github.com/kazupon/vue-i18n 兼容性: 支持 Vue.js 2.x 以上版本 安装方法:(此处只演示 npm) npm insta ...

  4. MySQL常用存储引擎

    MySQL存储引擎主要有两大类: 1. 事务安全表:InnoDB.BDB. 2. 非事务安全表:MyISAM.MEMORY.MERGE.EXAMPLE.NDB Cluster.ARCHIVE.CSV. ...

  5. LeetCode 80. Remove Duplicates from Sorted Array II (从有序序列里移除重复项之二)

    Follow up for "Remove Duplicates":What if duplicates are allowed at most twice? For exampl ...

  6. 微信小程序获取微信的openid

    通过登录接口获取登录凭证,然后通过request请求后台获取openid,需要把后台域名放到小程序后台的request 合法域名内: 1.wx.login  获取登录凭证 2.wx.request 发 ...

  7. 笔记-测试崩溃之memcpy_s

    昨天晚上提测,今天早上测试发来贺电,程序崩溃!!!!!! 而问题出在memcpy_s errno_t memcpy_s( void *dest, size_t numberOfElements, co ...

  8. Akka(35): Http:Server side streaming

    在前面几篇讨论里我们都提到过:Akka-http是一项系统集成工具库.它是以数据交换的形式进行系统集成的.所以,Akka-http的核心功能应该是数据交换的实现了:应该能通过某种公开的数据格式和传输标 ...

  9. 学Java的前景与就业,资深程序员教你怎么开始学Java!

    IT行业一直是就业的热门岗位,程序员这个职业稳定性和收入比都有着不错的前景,那么学Java的前景和就业是什么样的呢?随着入行Java的准程序员越来越多,各种学习Java的流派也层出不穷!其实在编程的世 ...

  10. css定位讲解

    定位分三种:相对定位,绝对定位,固定定位;     相对定位:position:relatve;     绝对定位:position:absolute; 固定定位:position:fixed; 一, ...