写点什么

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

  • 2016-02-15
  • 本文字数:1473 字

    阅读完需:约 5 分钟

自从.NET 平台问世以来,随着多年的发展与流行度的不断增长,它已经逐渐扩展到了多个平台与设备上。如果开发者想要将他们的项目从一个平台移植到另一个平台上,他们经常会面对一个难题:如何确定他们的代码使用了哪些 API,而目标平台又提供了哪些 API。微软最近推出了.NET 可移植性分析器(NPA —— .NET Portability Analyzer),能够使迁移的过程得到简化。

来自微软的 Taylor Southwick 与 Connie Yao 参加了由 Seth Juarez 所主持的一次 Channel 9谈话,他们的话题包括NPA 的功能,以及开发者如何在自己的项目中使用这一工具。NPA 的设计目标是帮助开发者处理在由一个平台转换至另一个平台时所遇到的问题。该工具对于源平台与目标平台的选择没有限制,这就意味着开发者可以进行任意类型的迁移。(举例来说,开发者可以从Widows Phone 迁移至Silverlight,或从Xamarin.Android 迁移至.NET Core。)

NPA 在执行时要指定源项目,它可以分析出项目中使用了哪些 API,以及转换至新的目标平台时需要进行哪些改动。当前所支持的平台包括:

  • .NET Framework 的每个桌面版本
  • Silverlight
  • Xamarin
  • Mono 3.3
  • Windows 8
  • Windows Phone
  • .NET Core

请注意,虽然开发者可以选择使用离线分析模式,但在默认情形下,所分析的代码信息将通过 web 服务发送给微软。整个分析过程将生成一个 API 列表,并发送给某个 web 服务(可移植性服务),该服务能够确定可用的目标,以及每种目标所具备的 API。在分析过程结束之后将为用户生成一份报告,包含了“可移植性索引”信息,其中含有你所使用的 API 中有多少比例是在其他平台中不可用的细节信息。但该报告并不会告诉你这些 API 使用了多少次,只会告诉你是否使用过某个 API(也就是说,无论某个 API 使用了 1 次或是 100 次,分析结果的评分都是一样的。)

在分析过程中使用 web 服务的原因有两个。微软希望通过一种简单的方式让分析功能保持更新,并且通过这种方式了解客户使用了哪些 API。这些信息也将帮助微软决定有哪些 API 应该从桌面版本中移植到“次世代”的版本中,即.NET Core、ASP.NET 等等。

如果有人对于这种方式存在隐私方面的顾虑,或者在他们的开发环境中无法访问互联网,那么 NPA 还提供了一种离线模式,可以通过重编译 NPA 以支持这一模式。微软已尽力减少通过 web 服务发送至服务器的信息,作为这一简化流程的一部分,NPA 会尝试确定哪些代码是微软的 API、哪些代码是客户自行编写的 API,并仅发送微软的 API 数据。此外,还可以通过一个命令行选项查看发送给微软的信息。通常来说,以下信息将发送至微软服务器:

  • 所使用的 API
  • 所引用的程序集
  • 你的代码所在的程序集的名称

该工具将提供三种不同的报告格式:

  • HTML 报告 —— 对于你的代码库的可移植性给出一个总体概述
  • Excel 电子表格 —— 可为 API 的使用提供过滤数据
  • JSON 文件格式同样可用 —— 可将该文件与其他程序工具相结合,提供进一步的行为

作为微软开源计划的一部分,NPA 的源代码托管在 GitHub 平台。除了命令行工具之外,还可以通过一个扩展在 Visual Studio 中使用 NPA 功能。可以在 extension gallery 中找到该扩展,在VS2013 及VS2015 中使用。

在Visual Studio 中使用该工具除了能够生成报告之外,还有一个额外的好处。它能够以编辑器消息的方式指出你的代码中出现的可移植性问题,因此,每个有冲突的API 调用都会指向你的代码中的实际位置。如果可能的话,它还能够建议你如何对代码进行修正。通过它还能跳转至特定的代码调用之处,这将为你节省大量的时间。(请注意,当前版本的Visual Studio 扩展仅支持HTML 格式的报告。)

查看英文原文: Retargeting .NET Code

2016-02-15 18:002425
用户头像

发布了 428 篇内容, 共 189.4 次阅读, 收获喜欢 39 次。

关注

评论

发布
暂无评论
发现更多内容

“全球金牌敏捷课程” · 5月10-11日CSM认证课程

ShineScrum

敏捷 敏捷教练 项目经理 CSM认证 CSM认证培训

AI与智能客服:如何让AI为企业提供更高效、更人性化的客户服务?

天津汇柏科技有限公司

人工智能 智能客服 AI 人工智能

深入研究:1688商品跨境属性API接口详解

tbapi

1688API 1688跨境代采 1688商品属性接口 1688跨境属性接口

ArkUI-X 5.0.4 Release:跨平台开发的全新体验

坚果

鸿蒙 HarmonyOS 坚果派

K8S 部署 Deepseek 要 3 天?别逗了!Ollama+GPU Operator 1 小时搞定

北京好雨科技有限公司

k8s rainbond 企业号 4 月 PK 榜 gpu 算力 DeepSeek R1 模型

合合信息发布智能文档处理行业白皮书,破解文档处理效率与安全问题

合合技术团队

人工智能 智能文档 #大数据 文档解析

【FAQ】HarmonyOS SDK 闭源开放能力 —Health Service Kit

HarmonyOS SDK

harmoyos

基于 PHP/Java 的淘宝 API 调用实践:从商品详情页 JSON 数据解析到结构化重构

代码忍者

淘宝API接口

出版社题库管理系统的技术难点

北京木奇移动技术有限公司

软件外包公司 出版社 题库系统开发

如何开拓亚洲加密货币市场?一文解析亚洲国家差异、用户行为及市场特征

TechubNews

加密市场

一键部署 Dify + MCP Server,高效开发 AI 智能体应用

阿里巴巴云原生

Spark on K8s 在vivo大数据平台的混部实战

vivo互联网技术

大数据 spark 容器化

汇源与用友战略签约,共启果汁行业数智发展新纪元!

用友BIP

“敏捷产品管理精进课程” 6月14-15日 · A-CSPO认证【提前报名特惠】

ShineScrum

敏捷 PO 敏捷教练 产品负责人 CSPO认证

AI重构商品计划管理:时尚品牌决胜未来的四大核心能力

第七在线

电商多平台聚合搜索API开发全攻略:淘宝/1688/某东一站式打通!

代码忍者

API接口工具

博睿数据受邀出席“AI助力湾区数智金融会议”,分享主题演讲

博睿数据

Featured.com收购HARO

财见

出版社题库管理系统的开发

北京木奇移动技术有限公司

软件外包公司 出版社 题库管理系统

利用大模型实现地理领域文档中英文自动化翻译

亚马逊云科技 (Amazon Web Services)

用友BIP 智能产品三连发,推动制造企业稳质量、降成本、提效率、增收入!

用友BIP

TLM算法仿真5G毫米波手机天线和整机

思茂信息

5G 仿真 CST Studio Suite

NocoBase 本周更新汇总:部分商业插件改为开源

NocoBase

开源 低代码 插件 无代码 版本更新

中国信通院联合行业巨头启动“可信AI智能体测试床”

测试人

人工智能

秘密任务 2.0:如何利用 WebSockets + DTOs 设计实时操作

数据追梦人

利用Apipost轻松实现用户充值系统的API自动化测试

数据追梦人

热门活动速递 | AI 原生应用开发实战营·深圳站

阿里巴巴云原生

阿里云 云原生

能否将扩散模型思想应用于 LLMs 领域?大型语言扩散模型(LLDM)详解

Baihai IDP

程序员 AI LLMs LLDM LLaDA

出版社题库管理系统的功能

北京木奇移动技术有限公司

软件外包公司 出版社 题库管理系统

质量管理中的IQC、PQC、FQC、OQC

积木链小链

质量管理 数字化 智能制造

乐言科技:云原生加速电商行业赋能,云消息队列助力降本 37%

阿里巴巴云原生

阿里云 云原生

重新设定.NET代码的目标平台_.NET_Jeff Martin_InfoQ精选文章