从.NET迁移到.NET Core的一个主要缘由,在于后者具有在Linux上运行的能力。可是对于大型企业应用,不可能实现一步迁移到位。由此,Microsoft推荐采用一种逐步迁移作法:
第一步,迁移到ASP.NET Core(依然使用.NET Framework);
第二步,迁移到.NET Core(依然运行在Windows上);
第三步,迁移到Linux上;
第四步,迁移到(托管Linux主机的)Azure中。
这一作法理论上可行,可是在第二步中会有阻碍,由于缺少关键API。用于.NET Core的Windows兼容包的推出,意在解决这一问题。该兼容包是一个NuGet软件包集合,其中包含了近两万个API,目的在于解决Web应用程序开发人员对于优秀软件库的需求。web
新引入的API大致上可分为两类。一类是仅适用于Windows的API,另外一类是跨平台的软件库。其中,仅适用于Windows的API包括:数据库
其中大部分API是与Windows操做系统紧密关联的,而相应的Linux API一般在设计上迥异。
跨平台的软件库包括:缓存
需指出的是,这些API是刻意独立于.NET Core的完整发布的。对此,Microsoft的Immo Landwerth给出了以下解释:
以独立软件包提供的缘由在于:(一)很多API是仅出于兼容性的考虑而提供的。在新代码中,不该依赖于这些API;(二)很多API仅用于Windows平台。咱们不但愿将用户引上一条更难以跨平台迁移应用的道路。
为了易于区分仅适用于Windows的和跨平台的API,如今有一种API兼容性分析工具可用。该工具能够标记出那些在应用中不该继续依赖的API。
你可使用与弃用API相同的抑制选项,可是也能够选择对特定平台给出抑制警告。若是你仅规划在一组特定的平台上支持你的代码,例如只支持Windows和Linux但不支持macOS,这一工具十分有用。为此,你只需编辑项目文件,添加一个PlatformCompatIgnore属性,并在该属性中列出全部要忽略的平台。安全