迁移.net framework 工程到.net core

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

     1.创建一个.net core的工程,然后把所有的文件挪过去。这是比较笨的一种办法,如果工程比较小,还好弄。如果有几百工程,那就哭了。

     2.通过编辑.csproj文件,强制把工程迁移到.net core下。

     今天给大家分享的就是,如何通过修改.csproj文件的方式,把.net framework 工程迁移到.net core下。

     步骤一:通过VS2017打开.net framework 解决方案,卸载指定的项目后,打开.csproj文件。

     步骤二:移除两个 import引用

    步骤三:移除 Release、Debug编译的配置信息

     步骤四:修改 Project节点属性:

<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

     替换为:

<Project Sdk="Microsoft.NET.Sdk">

     步骤五:移除TargetFrameworkVersion信息,增加信息:<TargetFramework>netcoreapp2.0</TargetFramework>

     步骤六:重新加载项目

     步骤七:在已经加载的 .net core项目上,继续编辑csproj文件。

     步骤八:移除文件列表信息。

     步骤九:移除AssemblyInfo.cs文件。

     步骤十:移除.net framework工程中隐藏的文件。因为.net core 工程不支持排除文件,所以在完成上述迁移后,原来隐藏的文件会自动添加到工程中,对这些垃圾文件,请识别后,手工删除即可。

     步骤十一:重新添加nuget包引用。.net framework 对nuget包的引用信息是存储到packages.config中的。此文件已经在.net core中移除。请根据packages.config信息,在项目中重新添加nuget引用。引用信息将会自动添加到csproj文件中。

     步骤十二:编译工程。说一下,很多.net framework的API在.net core中已经没有了,正在迁移前,请看一下下面的.net core的资料。

 

======================================

1. 不支持序列化和xml操作

    *(需要:Install-Package System.Xml.XmlDocument , Install-Package System.Runtime.Serialization.Formatters -Pre, Install-Package System.Xml.XmlSerializer)

    * XmlDocument

    * XmlIgnore

    * Serializable

    * XmlNode

    * BinaryFormatter

    * SoapFormatter

    * InflaterInputStream

    * DataContractSerializer (Install-Package System.Runtime.Serialization.Xml)

    * DataContractJsonSerializer(Install-Package System.Runtime.Serialization.Json)

2. 部分反射需要改造, you need to reference the following:

    * System.Reflection

    * System.Reflection.Primitives

    * System.Reflection.Extensions

    * System.Reflection.TypeExtensions

    * If you need IL generation then add System.Reflection.Emit andSystem.Reflection.Emit.ILGeneration

    * 比如Type.GetProperties()要改为Type.GetTypeInfo().GetProperties()

    * 不支持Assembly.GetExecutingAssembly() https://forums.asp.net/t/2001385.aspx

3. Tasks and Threading and async/await are available, but you will have to reference the following:

    * System.Threading.Thread

    * System.Threading.Tasks

4. Sockets are available but you need to reference the following:

    * System.Net.Sockets.

    * System.Net.Security if you want SslStream.

    * Also, socket.Close() is now socket.Dispose()

5. Remoting,It's used for cross-AppDomain communication, which is no longer supported. Also, Remoting requires runtime support, which is expensive to maintain.

6. Async is supported (see above point) but the older IAsyncResult-based async is not supported. You will have to disable those sections using #if tags or upgrade to async/await.

7. Serialization by converting data to and from Binary is unsupported, but XML, and JSON serialization is. (see System.Runtime.Serialization.Xml and System.Runtime.Serialization.Json)

8. Crypto is available but many classes are renamed and refactored, for eg. new SHA1CryptoServiceProvider() is now SHA256.Create().

9. StackTrace is available but you need the extra System.Diagnostics.StackTrace, so if its not essential you may want to remove from your code rather than add an additional dependency

10. XAML is unsupported but if you are targeting UWP you will have to use the Windows RT XAML APIs.

11. 不支持部分对象:

    * ArrayList

    * Hashtable

    * HybridDictionary

    * BindingList

    * Thread(Install-Package System.Threading.Thread)

    * Process(Install-Package System.Diagnostics.Process)

    * HttpContext

    * AppDomain

    * DataSet / DataTable / DBNull。DataTable and DataSet is not available in the System.Data namespace but other features like the provider model and SQL client are available.

12. 注册表无法访问

    * RegistryKey

13. 不支持相关配置对象:

    * ConfigurationManager

    * WebConfigurationManager

    * ConfigurationSection

14. 不支持绘图

    * System.Drawing

    * System.Drawing.Size

15. 无法使用相关Web对象

    *System.Web.HttpUtility.HtmlDecode

16. 很多Stream没有了Close()方法,直接替换为Dispose()

17. DateTime.Now.ToShortDateString() 替换为 DateTime.Now.ToString("yyyy-MM-dd")

18. 不支持部分Attribute

    * DescriptionAttribute

19. WebResponse/WebRequest对象有变化

    * 不支持:httpWebResponse.ContentEncoding,无法识别是否响应加了GZip,也或许能自动识别

    * 不支持:httpWebRequest.Referer / .UserAgent 无法设置请求浏览器和来源地址

20. Some key missing components: (source)

    * System.AppDomain - App Domains

    * System.Drawing.Image - Graphics, Bitmap Images

     * System.DirectoryServices - LDAP, Active Directory

    * System.Transactions - ambient transactions, distributed transactions

    * System.Xml.Xsl - XSLT

    * System.Xml.Schema - XSD

    * System.Net.Mail - Sending Email

    * System.Runtime.Remoting - Remoting, RPC

    * System.Runtime.Serialization.Xml - Binary Serialization

    * System.IO.Ports - Serial Port

    * System.Workflow - Windows Workflow Foundation

相关文章: 

  • .NET应用迁移到.NET Core(一)

  • .NET应用迁移到.NET Core(二)风险评估

  • .NET应用迁移到.NET Core(三)从商业角度看移植过程

  • .NET应用迁移到.NET Core--调查案例

  • 迁移传统.net 应用到.net core [视频]

  • 应用工具 .NET Portability Analyzer 分析迁移dotnet core

  • .net core 2.0学习笔记(一):开发运行环境搭建

  • .net core 2.0学习笔记(二):Hello World & 进阶

  • 度量.net framework 迁移到.net core的工作量

原文地址: http://www.cnblogs.com/vveiliang/p/7409825.html


.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/324005.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

(归并排序 快排 堆)

文章目录归并排序递归方法实现非递归方法实现求数组的小和求数组的降序对个数快排荷兰国旗问题&#xff08;Partition过程&#xff09;快排1.0快排2.0快排3.0堆大根堆堆排序使用堆排序归并排序 递归方法实现 public class Code01_MergeSort {// 递归方法实现public static vo…

亦云小组KTV点歌系统简介

20级青鸟四班 亦云小组指导老师&#xff1a;穆老师 班主任&#xff1a;佟老师小组成员&#xff1a;组长&#xff1a;靳天宇组员&#xff1a;王晓丹 谢佳泽 王睿志 蒲璐颖 张铨政目录&#xff1a;1.首页 2.项目前台 3..项目后台总结&#xff1a;本次KTV项目总结。总体来说&…

学习手记(2018/7/14~2018/7/18)——快乐纪中

2018/7/14&#xff1a;普通的纪中一天 儿子兄弟表示法 将一颗多叉树转换为二叉树的方法&#xff0c;左子节点连原树的第一个儿子&#xff0c;右子节点连原树的右边的兄弟 适用范围&#xff1a;树形dp 数位dp常见方法 状态压缩 分类讨论记忆法&#xff08;记忆化搜索&#x…

Entity Framework Core 2.0 特性介绍和使用指南

前言 这是.Net Core 2.0生态生态介绍的最后一篇&#xff0c;EF一直是我喜欢的一个ORM框架&#xff0c;随着版本升级EF也发展到EF6.x&#xff0c;Entity Framework Core是一个支持跨平台的全新版本&#xff0c;可以用三个词来概况EF Core的特点&#xff1a;轻量级、可扩展、跨平…

图解elasticsearch原理转载自

转载自 图解elasticsearch原理 版本 elasticsearch版本: elasticsearch-2.x 内容 图解ElasticSearch 云上的集群 集群里的盒子 云里面的每个白色正方形的盒子代表一个节点——Node。 节点之间 在一个或者多个节点直接&#xff0c;多个绿色小方块组合在一起形成一个Elas…

零云九歌小组KTV点歌系统简介

指导老师&#xff1a;穆老师 班主任&#xff1a;佟老师小组成员&#xff1a;组长&#xff1a;张炜林 副组长&#xff1a;李钰组员&#xff1a;郑宪佳 宋翔 李兆勋 杜庆霖零云九歌目录&#xff1a;1.首页 2.项目前台 3..项目后台总结&#xff1a;本次KTV项目总结。总体来说&am…

Orleans简单配置

话说曾几何时,我第一次看到xml文件,心中闪过一念想:"这<>是什么鬼?"…用ini或者json多简单易懂,现在发觉作为配置文件,json有赶超xml的趋势.不过xml用多了,也觉得顺眼多了.不觉得<>难看了,反而它能折叠让我觉得组织起来也更方便了.这说明一个道理:不是你…

say小组KTV点歌系统简介

指导老师&#xff1a;穆老师 班主任&#xff1a;佟老师小组成员&#xff1a;组长&#xff1a;焦文宇 组员&#xff1a;窦倩 王晓凤 巩固 石虹蔓 田锋目录&#xff1a;1.首页 2.项目前台 3..项目后台总结&#xff1a;从5月25号开始的到6月10号结束&#xff0c;这期间我们遇…

Java虚拟机必学之四大知识要点,附学习资料

转载自 Java虚拟机必学之四大知识要点&#xff0c;附学习资料 作为一位 Java 程序员&#xff0c;在尽情享受 Java 虚拟机带来好处的同时&#xff0c;我们还应该去了解和思考“这些技术特性是如何实现的”&#xff0c;去了解最底层的原理。只有熟悉 JVM&#xff0c;你才能在遇…

程序配置amp;amp;ConfigurationManager

配置组件是.net framework中非常常用的功能。在创建.net framework 工程时&#xff0c;系统不仅会自动生成app.config文件&#xff0c;而且还提供了非常强大的访问类库。但是这些好东西&#xff0c;在.net core 2.0中已经不复存在&#xff0c;至少说没有.net framework 中那么完…

既然参与,那就做好,我相信我们是最棒的!!!

‍‍大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;雄雄的小课堂。今天是3班的KTV项目答辩&#xff0c;也是20级的最后一个班级&#xff0c;连续6天的KTV项目答辩终于告一段落。回顾各班所做的项目&#xff0c;通过我自己参与点评的以及从班内参观同学…

又发生频繁FGC,这次是谁的锅

转载自 又发生频繁FGC&#xff0c;这次是谁的锅 这是笨神JVMPocket群里一位名为"云何*住"的同学提出来的问题&#xff0c;问题现象是CPU飙高并且频繁FullGC。 重现问题 这位同学的业务代码比较复杂&#xff0c;为了简化业务场景&#xff0c;笔者将其代码压缩成如…

三个剩两个,两个剩一个,最后一个都没剩下。

大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;雄雄的小课堂。今天文章的标题本来是&#xff1a;“从未见过如此不要脸耍无赖的人&#xff01;&#xff01;&#xff01;”&#xff0c;后来想了想&#xff0c;毕竟公众号里面还有那么多不同身份的粉丝&a…

算法面试,如何在100 亿URL中判断某个URL是否存在

转载自 算法面试&#xff0c;如何在100 亿URL中判断某个URL是否存在 如果面试官问你&#xff0c;一个网站有 100 亿 url 存在一个黑名单中&#xff0c;每条 url 平均 64 字节。问这个黑名单要怎么存&#xff1f;若此时随便输入一个 url&#xff0c;如何判断该 url 是否在这个…

.NET Core 2.0迁移技巧之web.config配置文件

大家都知道.NET Core现在不再支持原来的web.config配置文件了&#xff0c;取而代之的是json或xml配置文件。官方推荐的项目配置方式是使用appsettings.json配置文件&#xff0c;这对现有一些重度使用web.cofig配置的项目迁移可能是不可接受的。 但是好消息是&#xff0c;我们是…

学会它,可以替你写100行 200行 300行……的代码

大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;雄雄的小课堂。今天&#xff0c;给大家分享一个非常非常使用的小技巧&#xff0c;那就是&#xff1a;“在webstrom中创建一个简单的vue模板”&#xff0c;根据这个方法&#xff0c;你可以任意的创建html模…

Java中随机数的原理,以及使用时的注意点

转载自 Java中随机数的原理&#xff0c;以及使用时的注意点 1 前言 一提到 Java 中的随机数&#xff0c;很多人就会想到 Random&#xff0c;当出现生成随机数这样需求时&#xff0c;大多数人都会选择使用 Random 来生成随机数。Random 类是线程安全的&#xff0c;但其内部使…

MySql 使用 EF Core 2.0 CodeFirst、DbFirst、数据库迁移(Migration)介绍及示例

dotnet core 2.0 发布已经好几天了&#xff0c;期间也把原来 dotnet core 1.1 的 MVC 项目升级到了 2.0&#xff0c;升级过程还是比较顺利的&#xff0c;变动也不是太多。升级的过程中也少不了 Entity Framwork Core 的升级&#xff0c;在这篇文章中主要介绍下 MySql 数据库使用…

下午带着几个同学打了两节课的牌~

大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;雄雄的小课堂。大赛的项目目前正在火热进行中&#xff0c;靳天宇小组做的是扑克牌的游戏&#xff0c;除了要做大家耳熟能详的“斗地主”之外&#xff0c;另外在我的建议下准备再加两种玩法&#xff0c;一…

jzoj2137-(GDKOI2004)城市统计【二维前缀和,bfs】

正题 大意 有n*n的矩阵&#xff0c;有居民区有商业区&#xff0c;每个居民区曼哈顿距离最近的商业区的曼哈顿距离就是那个居民区离商业区的距离。每个格子统计一下以它为中心的2∗r12∗r12∗r12∗r1的矩阵内所有居民区离商业区的距离的和。 解题思路 先bfs计算所有居民离商业…