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.configproject.json 和 paket.dependencies 文件上传,网站就会给你分析你的项目依赖的第三方库的.NET Core是否已经有了支持的库。

总结

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

欢迎大家关注微信号opendotnet,微信公众号名称:dotNET跨平台。扫下面的二维码或者收藏下面的二维码关注吧(长按下面的二维码图片、并选择识别图中的二维码)

 

NET Portability Analyzer的更多相关文章

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

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

  2. .NET Portability Analyzer 已开源

    在一年前介绍过<介绍.NET 开发必备工具 .NET Portability Analyzer>,微软已经把代码开源到Github:https://github.com/Microsoft ...

  3. 介绍.NET 开发必备工具 .NET Portability Analyzer

    随着.NET的原来越开放,不仅仅是开源这么简单了,也意味着.NET程序员要关注越来越多的平台,涵盖.NET Mic Framework, Xamarin,Mono,.NET等等,从windows到li ...

  4. 迁移桌面程序到MS Store(6)——.NET Portability Analyzer

    上一篇我们简单介绍了.NET Standard,本篇我们来实践.NET Framework 4.5 Class Library到.NET Standard 2.0的转换.        首先让我们来做 ...

  5. [转]应用工具 .NET Portability Analyzer 分析迁移 Dotnet core

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

  6. 专业上的常用的工具和类库集 By 老衣

    Visual Studio 2013 扩展 CodeMaid: 可快速整理代码文件,清理不必要的代码和杂乱的格式.并在开发时实时提供代码复杂度的报告,以便帮助开发人员降低代码复杂度.提高代码质量. C ...

  7. ASP.NET 5系列教程 (一):领读新特性

    近期微软发布了ASP.NET 5.0,本次发布的新特性需求源于大量用户的反馈和需求,例如灵活的跨平台运行时和自主部署能力使ASP.NET应用不再受限于IIS.Cloud-ready环境配置降低了云端部 ...

  8. 为什么重新设计 ASP.NET?

    灵活的跨平台运行时需求 早期 .NET Framework 版本一直作为单一且全面的整体进行安装,每个新版本都包含了新功能和几乎所有早期功能,而鲜有删减,这就不可避免的造成Framework的体积的增 ...

  9. ASP.NET 5概观 (ASP.NET 5 Overview)

    http://www.asp.net/vnext/overview/aspnet-vnext/aspnet-5-overview ASP.NET 5概观(ASP.NET 5 Overview) 原作: ...

随机推荐

  1. InnoDB的redo日志管理---饶珑辉

    http://raolonghui.com/2015/06/24/innodb%E7%9A%84redo%E6%97%A5%E5%BF%97%E7%AE%A1%E7%90%86/#comment-11

  2. mysql my.ini 详解

    linux下mysql配置文件my.cnf详解[转]   basedir = path 使用给定目录作为根目录(安装目录). character-sets-dir = path 给出存放着字符集的目录 ...

  3. Markdown 添加 Latex 数学公式

    添加公式的方法 Latex 数学公式语法 添加公式的方法 行内公式 $行内公式$ 行间公式 $$行间公式$$ Latex 数学公式语法 角标(上下标) 上标命令^{} 下标命令_{} 上下标命令用来放 ...

  4. 5.CentOS6.6安装git

    额,因为公司的项目存放在gitlab上,所以要求员工必须会使用git 这里简单说下git在 linux下的安装,使用的说明,我会单开一篇文章来写 1.首先卸载掉CentOS6.6自带的1.7.1版本的 ...

  5. html代码实现自动滚动,鼠标滑过时停止滚动

    <marquee style="width: 1200px;height:200px;margin:0px auto" onmouseout="this.start ...

  6. Linux操作系统搭建LAMP开发环境

    Step1. 安装 Apache 在terminal中输入命令 sudo apt-get install apache2 打开浏览器,在地址栏输入:127.0.0.1,如果出现了 “It works! ...

  7. JS实现各种页面的刷新

    JS实现各种页面的刷新功能 1.刷新当前页面 opener.location.replace(opener.location.href); 或者window.opener.window.locatio ...

  8. 20160328 javaweb Cookie 小练习

    利用cookie实现历史记录浏览: 由于是简单演示,所以直接用javabean 取代数据库了 数据存储类: package com.dzq.dao; import java.util.*; impor ...

  9. nyoj832 合并游戏(状态压缩DP)

    题意 : n个石子, 给你一个n*n矩阵, A[i][j]表示第i个和第j个合并蹦出的金币值, 合并完石子 j 消失.求合并所有石子后,所得的最大金币数. 分析 :     1. 题中给的数据范围   ...

  10. 学会用Reflector调试我们的MVC框架代码

    我们知道,现在能调试.net程序通常有两个,第一个是ILSpy,还是一个是Reflector,这两个小反编译软件算是我们研究底层代码中所拥有的一把 锋利小尖刀~~~,比如你看到的ILSpy这样的界面图 ...