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

大多数开发人员更喜欢一次性编写好业务逻辑代码,以后再重用这些代码。与构建不同的应用以面向多个平台相比,这种方法更加容易。如果您创建与 .NET Core 兼容的.NET 标准库,那么现在比以往任何时候都更接近于这一现实。

但是,现有的 .NET Framework 库怎么办呢?要使这些跨平台兼容并将它们转换成 .NET 标准库,需要做多少工作呢? 使用工具 .NET Portability Analyzer进行分析。利用几个简单的技术并进行一些项目文件修改,这有助于简化这一流程。

.NET Portability Analyzer 工具是 .NET Framework 团队创建的 Visual Studio 扩展。您可以与支持扩展的 Visual Studio 的任何最新版本配合使用该工具。只需将 Portability Analyzer 指向您的程序集或项目,该工具就会针对您为了提高兼容性而应使用的 API 提供摘要、详细报告和建议。对于项目,该工具会列出错误消息并将您转到需要更改的代码行。

.NET Portability Analyzer 包含有一个称作 API Portability Analyzer 的同级控制台应用(您可以从https://github.com/Microsoft/dotnet-apiport/releases 中下载该应用),它生成的结果类似于 Portability Analyzer 生成的结果。在本文中,我将着重介绍如何使用 Visual Studio 扩展。

进行相应设置

对于要跨平台采用的库,它应适当分解且包含大部分业务逻辑。UI 代码应该被分离到其他项目。不过,由于 .NET Core 是 .NET Framework 的子集,因此,即使对您的代码进行适当分解,您的库可能正在使用 .NET Core 中不支持的 API。

在某些情况下,存在可以完成同样事情的备用 API。在这些情况下,Portability Analyzer 将建议使用一个备用 API。在其他情况下,没有 API 可以替代而且您需要分解出特定于平台的代码。最后,即使您不知道程序集的分解情况,也可以使用 Portability Analyzer 来执行快速评估。

这个扩展支持 Visual Studio 2013 或 2015,下一步是安装该扩展。在 Visual Studio 库中搜索 .NET Portability Analyzer 或直接到 https://visualstudiogallery.msdn.microsoft.com/1177943e-cfb7-4822-a8a6-e56c7905292b 下载安装。

单击“下载”按钮并选择“打开”。通过下一个对话框,您可以选择要将该扩展应用到的 Visual Studio 版本。单击“安装”可启动安装,然后单击“关闭”可退出该对话框。现在,您可以选择您的目标平台并分析程序集或项目。

选择目标平台

默认情况下,Portability Analyzer 提供 .NET Framework、 .NET Core App、.NET Standard 、ASP.NET Core、 Mono 和 Windows Phone 的结果。您可以通过以下步骤指定其他选项:访问 Visual Studio 中“工具”|“选项”菜单中的 .NET Portability Analyzer 条目并选择您要面向的平台集

运行 Portability Analyzer

有两种方法可以用来分析程序集和项目:

  • 若要分析已构建的程序集或可执行文件,请从 Visual Studio 的“分析”菜单中访问 Portability Analyzer 并浏览至程序集位置。使用此选项,该工具会生成摘要和详细报告。

  • 若要分析项目,请右键单击解决方案资源管理器中的目标项目。选择“分析”|“分析程序集可移植性,这特定于您所选的项目。使用此选项,该工具会生成摘要、详细报告并将消息输出到提供文件名和问题发生所在行号的错误列表。您还可以双击每条消息,然后该工具会将您导航到指定的代码行。

为了测试该工具,我选择了一个.NET 4.5.2的项目,测试下.NET Core的兼容性,Portability Analyzer 可以让我一览我需要做的工作,而无需实际转换该项目、更改目标以及试图解决编译错误。

我运行该工具,并且结果真是鼓舞人心。下图显示摘要、详细报告、错误消息和报告 URL。根据摘要,我发现我的库与所有这些平台都非常兼容。

详细结果通过类似电子表格的形式仅显示一个或多个目标平台不支持的 API。可轻松扫描详细信息。它们标有一个红色的 X,用来指明不支持 API 的位置,而绿色的标记则指明支持。值得注意的是,各个平台均支持且无需任何重构的 API 不会在此报告中列出。

详细信息还包括推荐的更改内容列,其中指向可跨多个平台工作的备用 API。在详细信息的底部,该报告包含“返回到摘要”链接。这将导航回到顶部的摘要。虽然我的结果非常短,但是“返回到顶部”功能对于较长的报告非常有用。

由于我已经分析了一个项目,因此我的报告包含指明文件和发生使用的行号的“错误列表”消息。如果单击该消息,此工具将转到该消息指明的文件和行。

如果您要在 Visual Studio 外部访问这些结果,可以在位于和目标程序集相同的项目目录中的 HTML 文件 (ApiPortability­Analysis.htm) 中找到这些结果。该位置在报告顶部中的 URL 部分中指明

除了这个工具还有一个在线的分析工具 https://icanhasdot.net/, 只要把你的项目的packages.config, project.jsonpaket.dependencies 文件上传,网站就会给你分析你的项目依赖的第三方库的.NET Core是否已经有了支持的库。

总结

Portability Analyzer不仅帮助我快速地评估我需要做哪些工作才能使我的库可以跨平台使用,而且还认识到从我的代码到方法调用和属性使用中的所有特定于平台的问题。它还建议使用哪些备用 API,通过在线的工具分析依赖的第三方库是否已经有了.NET Core的支持。


相关文章:

  • .NET Portability Analyzer 已开源

  • 重新设定.NET代码的目标平台

  • .NET 标准介绍


原文地址:http://www.cnblogs.com/shanyou/p/5944664.html


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

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

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

相关文章

idea安装插件plugin(主要针对网络连接不上的情况)

idea安装插件plugin(主要针对网络连接不上的情况) 2018年04月27日 11:07:36 多机智 阅读数:10097 STEP1: ctrl alt s 打开settings STEP2: 在输入框键入 Plugins STEP3: 输入你想要的插件名称,我这边输入的是nodejs,因为最近在学(我这边是安装过…

linux打开服务iis,如何在Linux中引导时列出启动服务?

根据不同的启动系统,查找启动服务的列表会有所不同。Systemd是主要新版本Linux发行版的默认启动系统。如果您的系统使用systemd系统管理器,您可以使用以下命令列出所有服务。$ sudo systemctl list-unit-files --typeservice如上所述,这个命令…

银行营业网点管理系统——Servlet包(CityAreaServlet )

package BranchesMgr.servlet; /*** 城区表的Servlet*/ import java.io.IOException; import java.io.PrintWriter; import java.util.List;import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; im…

.NET Core中使用Razor模板引擎

一、简介 在MVC以外的场景中,我们往往需要完成一些模板引擎生成代码或页面的工作;在以前我们一般常用的有Razor、NVeocity、VTemplate。虽然所有的模板系统都具有一些共同特征,但 Razor却和我们前面讨论的二种视图引擎截然不同。不同于其它视…

idea中Gitlab项目导入导出

idea中Gitlab项目导入导出 2018年04月16日 16:39:23 蓝之刃 阅读数:15415 Gitlab的使用 Gitlab跟Github类似,都是代码托管的网站,最大的不同是Gitlab创建的项目可以免费私有的,不必像Github那样收费,而且Gitlab还可…

服务器 ha linux,Linux 高可用(HA)集群之Heartbeat详解

大纲一、Heartbeat 的定义二、Heartbeat 的版本与组件三、Heartbeat 的各版本之间的区别四、Heartbeat 集群的一般拓扑图推荐阅读:一、Heartbeat的定义Heartbeat 项目是 Linux-HA 工程的一个组成部分,也是目前开源HA项目中最成功的一个例子,L…

一篇文章彻底了解清楚什么是负载均衡

转载自 一篇文章彻底了解清楚什么是负载均衡 负载均衡是高可用网络基础架构的的一个关键组成部分,有了负载均衡,我们通常可以将我们的应用服务器部署多台,然后通过负载均衡将用户的请求分发到不同的服务器用来提高网站、应用、数据库或其他…

intellij-IDE运行Java程序报错:java: -source 1.5 中不支持 lambda 表达式 有用

intellij-IDE运行Java程序报错:java: -source 1.5 中不支持 lambda 表达式 2017年12月29日 15:04:15 佛空如水 阅读数:795 报错: 解决: 第一步修改: 第二步修改:

linux驱动开发音频设备驱动,linux驱动开发—基于Device tree机制的驱动编写

摘要:媒介 Device Tree是一种用去描绘硬件的数据布局,类似板级描绘说话,发源于OpenFirmware(OF)。正在现在遍及应用的kernel 2.6.x版本中,对分歧仄台、分歧硬件,往]前言Device Tree是一种用来描述硬件的数据结构&#…

gRPC .NET Core跨平台学习

前些天发布gRPC C# 学习,在.NET Framework 中使用gRPC ,今天来学习 .NET Core gRPC。 gRPC 的.NET Core 包在NuGet 上发布了,结合.NET Core 实现gRPC 完美跨平台。 本篇主要讲解 .NET Core 版gRPC客户端运行在Ubuntu系统上,与局域…

IDEA导入Maven项目,pom.xml文件中 有inspects a maven model for resolution problems报错 !!!!!!!!!!有用

IDEA导入Maven项目,pom.xml文件中 有inspects a maven model for resolution problems报错 2018年08月06日 22:13:09 东方不能败 阅读数:4616 我是导入一个已经写好的Maven工程,导入后返现在pom.xml文件中有inspects a maven model for res…

Windows Server 2016提供Docker原生运行的企业级支持

Windows Server 2016已原生支持Docker,这使得Windows应用可运行在容器中。该评估版目前已经可用,期望于本月底之前,Microsoft将提供从评估版到RTM的升级路径。该评估版发布于上周的Microsoft Ignite大会上,同时还发布了Microsoft和…

arm linux串口控制led,通信程序设计 - Linux下ARM和单片机的串口通信设计

3 通信程序设计ARM 与单片机的串口通信程序包括两方面: 一方面是作为上位机的ARM 的串口通信程序,另一方面是作为下位机的单片机的串口通信程序。在通信之前必须制定合理的通信协议以保证通信的可靠性和成功率。现约定双方通信协议如下:( 1) …

为什么我强烈建议大家使用枚举来实现单例

转载自 为什么我墙裂建议大家使用枚举来实现单例 关于单例模式,我的博客中有很多文章介绍过。作为23种设计模式中最为常用的设计模式,单例模式并没有想象的那么简单。因为在设计单例的时候要考虑很多问题,比如线程安全问题、序列化对单例的…

idea @Data 不起作用找不到 相关的注解

idea中Data标签getset不起作用(这个有用,下面的没用) 2017年06月08日 11:22:40 seapeak007 阅读数:25816 spring cloud中使用Data标签,不用手动添加get set方法,但是如果项目中其他类中使用getset方法,如果报错&…

搭建分布式 ASP.NET Core Web

单台Web处理用户请求的能力是有限的,因此我们可能会需要搭建分布式的Web服务器。 当前市面上,可能用的比较多的是会话保持,这种模式下,开发者只需将先前开发好的、不支持会话共享的程序部署在多台服务器上,负载均衡提供…

五分钟了解CDN

转载自 五分钟了解CDN一、什么是CDN? CDN全称Content Delivery Network,即内容分发网络。其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快、更稳定。 通过在网络各处放置节点服务器所构成的在现…

Eclipse导入他人的Maven工程报错

一.什么是maven? Maven是一个项目管理工具,它包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在…

拼图游戏C语言课设实验报告,C语言拼图游戏实验报告.doc

C语言拼图游戏实验报告课程设计实验报告班级:光电104—2 姓名:刘云龙 学号:201058501220一、实验题目:使用C语言编写一个小游戏(拼图游戏)二、实验目的:C语言是每一个通信学生的必修课之一,此次课程设计要求…

.Net开源微型ORM框架测评

什么是ORM? 对象关系映射(英语:Object Relation Mapping,简称ORM,或O/RM,或O/R mapping),是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。从效果上说&am…