[背景]

新项目需要跨平台,原来积累的.NET类库需要改造为.NET Core。

[直播]

  1. 新增加的项目不支持排除文件
  2. 不支持定义条件编译常量,虽然在项目中能使用#if语法,但无地方定义DefineConstants
  3. 使用nuget时,不能区分哪些可以引用,只有强制引用时会报出异常 error: Package xxx is not compatible with netstandard1.6
  4. 不支持序列化和xml操作
    1. (需要:Install-Package System.Xml.XmlDocument , Install-Package System.Runtime.Serialization.Formatters -Pre, Install-Package System.Xml.XmlSerializer)
    2. XmlDocument
    3. XmlIgnore
    4. Serializable
    5. XmlNode
    6. BinaryFormatter
    7. SoapFormatter
    8. InflaterInputStream
    9. DataContractSerializer (Install-Package System.Runtime.Serialization.Xml)
    10. DataContractJsonSerializer(Install-Package System.Runtime.Serialization.Json)
  5. 部分反射需要改造
    1. 比如Type.GetProperties()要改为Type.GetTypeInfo().GetProperties()
    2. 不支持Assembly.GetExecutingAssembly() https://forums.asp.net/t/2001385.aspx
  6. 不支持部分对象:
    1. ArrayList
    2. Hashtable
    3. HybridDictionary
    4. BindingList
    5. Thread(Install-Package System.Threading.Thread)
    6. Process(Install-Package System.Diagnostics.Process)
    7. HttpContext
    8. AppDomain
    9. DataSet / DataTable / DBNull
  7. 注册表无法访问
    1. RegistryKey
  8. 不支持nHibernate,nHibernate尚未升级支持Core
  9. 不支持log4net
  10. 不支持相关配置对象:
    1. ConfigurationManager
    2. WebConfigurationManager
    3. ConfigurationSection
  11. 不支持绘图
    1. System.Drawing
    2. System.Drawing.Size
  12. 无法使用相关Web对象
    1. System.Web.HttpUtility.HtmlDecode
  13. 很多Stream没有了Close()方法,直接替换为Dispose()
  14. DateTime.Now.ToShortDateString() 替换为 DateTime.Now.ToString("yyyy-MM-dd")
  15. 不支持部分Attribute
    1. DescriptionAttribute
  16. WebResponse/WebRequest对象有变化
    1. 不支持:httpWebResponse.ContentEncoding,无法识别是否响应加了GZip,也或许能自动识别
    2. 不支持:httpWebRequest.Referer / .UserAgent 无法设置请求浏览器和来源地址

[感受]

    1. Core的改造工作不是那么容易。要是有转换工具就好了。
    2. 或是原有的工程不用改造,在Linux中使用Docker技术来模拟.net需要的环境就好了;
    3. 原有的项目的特性未保留下来,比如:排除部分文件,添加链接文件;

.NET Core改造工程直播的更多相关文章

  1. Disqus评论框改造工程-Jekyll等静态博客实现Disqus代理访问

    文章最初发表于szhshp的第三边境研究所转载请注明 关于博客评论 六月多说挂了,地球人都知道. 倡言.云跟帖.来必力都很烂,地球人都知道. 转Disqus的都是人才. Disqus使用中遇到的问题 ...

  2. 《闲聊 ASP.NET Core》系列直播清单

    [闲聊 ASP.NET Core]第一期:项目与应用结构 [闲聊 ASP.NET Core]第二期:Web Host 初始化与生命周期事件 [闲聊ASP.NET Core]第三期:应用程序配置 [闲聊 ...

  3. .net core 2.0学习笔记(四):迁移.net framework 工程到.net core

    在迁移.net core的过程中,第一步就是要把.net framework 工程的目标框架改为.net core2.0,但是官网却没有提供转换工具,需要我们自己动手完成了..net framewor ...

  4. .NET Core工程编译事件$(TargetDir)变量为空引发的思考

    前言 最近客户反馈,为啥不用xcopy命令代替我自己写的命令来完成插件编译复制: 我的: <PostBuildEvent>call "$(SolutionDir)tools\to ...

  5. .Net Core技术研究-WebApi迁移ASP.NET Core2.0

    随着ASP.NET Core 2.0发布之后,原先运行在Windows IIS中的ASP.NET WebApi站点,就可以跨平台运行在Linux中.我们有必要先说一下ASP.NET Core. ASP ...

  6. ios开发:Core Data概述

    Core Data 概述 2005年的四月份,Apple 发布了 OS X 10.4,在这个版本中 Core Data 框架发布了.Core Data本身既不是数据库也不是数据库访问框架.相反,Cor ...

  7. Core Data数据持久性存储基础教程-备用

    摘要 就像我一直说的,Core Data是iOS编程,乃至Mac编程中使用持久性数据存储的最佳方式,本质上来说,Core Data使用的就是SQLite,但是通过一系列特性避免了使用SQL的一些列的麻 ...

  8. Modelsim独立仿真Vivado Clocking Wizard IP Core

    工欲善其事,必先利其器.在使用Vivado自带的仿真软件仿真的时候,相对于更优秀的仿真工具Modelsim,效率低了很多,为了更高效的开发,我尝试着用Vivado级联Modelsim仿真,但是级联后还 ...

  9. 【ASP.NET Core】JSON Patch 使用简述

    JSON Patch 是啥玩意儿?不知道,直接翻译吧,就叫它“Json 补丁”吧.干吗用的呢?当然是用来修改 JSON 文档的了.那咋修改呢?比较常见有四大操作:AMRR. 咋解释呢? A—— Add ...

随机推荐

  1. imperva 默认策略添加例外

    创建违规访问 检查违规的告警类型 假如客户的这个目录下真的有这个文件,而且客户非常明确这是一个正常且安全的东西怎么办?我该如何的将它添加到例外? 添加例外的步骤: 再次构造违规的请求: 默认策略添加例 ...

  2. linux文件管理 -> 系统压缩打包

    如果希望windows和Linux互相能使用的压缩工具, 建议.zip格式 压缩的好处主要有: 节省磁盘空间占用率 节省网络传输带宽消耗 网络传输更加快捷 Linux系统常见的后缀名所对应的压缩工具 ...

  3. 2.Centos-Docker-shipyard中文版安装

    1.准备(所有服务器都要执行) a.设置主机名和hosts vi /etc/hosts 192.168.1.2 centos-master 192.168.1.4 centos-minion-2 b. ...

  4. 数据库-mysql视图

    视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,并可以将其当作表来使用 一:创建视图 create view view ...

  5. 洛谷P2422 良好的感觉

    题目意思就是:最大化一个区间的和与这个区间的最小值的乘积. 换一个角度看问题,如果我们穷举一个最小值 $ a_i $ ,然后往左右扩展,显然是对的,复杂度 $ O(n^2) $.所以我们要优化一下这个 ...

  6. dede图集内容页调用

    {dede:productimagelist} <li> <img src="[field:imgsrc/]" width="92" heig ...

  7. JAVA复习笔记之GC部分

       前言:垃圾回收机制,大家都知道JAVA的垃圾回收都是JVM自动回收的,不需要程序员去管理.但是我们还是得知道原理才能在适当时机进行JVM调优 原理:当我们new 一个对象时JVM堆区就会分配一块 ...

  8. 消息 8101,级别 16,状态 1,第 1 行仅当使用了列列表并且 IDENTITY_INSERT 为 ON 时,才能为表'CUSTOMER_TBL'中的标识列指定显式值。

    像这样的问题怎么解决呢? 问题分析: 意思是你的主键是自动编号类型的,所以不能向该列插入数据. 解决办法: 执行 语句 :SET IDENTITY_INSERT CUSTOMER_TBL ON 然后在 ...

  9. RCTF2015 pwn试题分析

    pwn200 漏洞给的很明显,先是读到了main的局部数组中,然后在子函数中向子函数的局部数组栈里复制. 总体思路是leak system的地址,然后再向一个固定地址写入/bin/sh,最后执行sys ...

  10. hdu 5122 (2014北京现场赛 K题)

    把一个序列按从小到大排序 要执行多少次操作 只需要从右往左统计,并且不断更新最小值,若当前数为最小值,则将最小值更新为当前数,否则sum+1 Sample Input255 4 3 2 155 1 2 ...