其实机场网站源码分享的问题并不复杂,但是又很多的朋友都不太了解机场网页,因此呢,今天小编就来为大家分享机场网站源码分享的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!
本系列技术大约30篇文章,欢迎关注、点赞、评论、转发,每天都能获取IT优质内容。
本文讲解了在将代码从.NETFramework移植到.NET(旧称为.NETCore)时应考虑的事项。对于许多项目,从.NETFramework移植到.NET是相对简单的。项目的复杂性决定了在项目文件的初始迁移之后要做多少工作。
应用模型在.NET中可用的项目(如库、控制台应用和桌面应用)通常不需要太大的更改。需要使用新应用模型的项目(如从ASP.NET迁移到ASP.NETCore)需要的工作要多一点。旧应用模型中的很多模式都有可以在转换过程中使用的等效项。
不可用的技术
.NETFramework中有一些技术在.NET中是不存在:
应用程序域不支持创建额外应用程序域。对于代码隔离,将流程或容器用作备用。远程处理远程处理用于跨不再受支持的应用程序域进行通信。对于跨进程通信,可将进程间通信(IPC)机制视为远程处理的备用方案,如System.IO.Pipes类或MemoryMappedFile类。代码访问安全性(CAS)CAS是受.NETFramework支持、但在.NETFramework4.0中已停用的沙盒技术。它已被SecurityTransparency取代,并且在.NET中不受支持。请改用操作系统提供的安全边界,如虚拟化、容器或用户帐户。安全透明度与CAS类似,这种沙盒技术不再被推荐用于.NETFramework应用程序,而且在.NET中也不受支持。请改用操作系统提供的安全边界,如虚拟化、容器或用户帐户。System.EnterpriseServices.NET不支持System.EnterpriseServices(COM+)。WindowsWorkflowFoundation(WF)和WindowsCommunicationFoundation(WCF).NET5及更高版本(包括.NETCore)不支持WF和WCF。有关替代方法,请参阅CoreWF和CoreWCF。
若要详细了解这些不受支持的技术,请参阅.NETFramework技术在.NETCore和.NET5及更高版本上不可用。
Windows桌面技术
许多为.NETFramework创建的应用程序都使用桌面技术,如Windows窗体或WindowsPresentationFoundation(WPF)。虽然Windows窗体和WPF均已移植到.NET中,但这些仍是仅适用于Windows的技术。
在迁移Windows窗体或WPF应用程序之前,请先考虑以下依赖项:
适用于.NET的项目文件使用与.NETFramework不同的格式。你的项目可能会使用在.NET中不可用的API。第三方控件和库可能还没有移植到.NET中,仍只对.NETFramework可用。你的项目使用在.NET中不再可用的技术。
.NET使用Windows窗体和WPF的开放源代码版本,并对.NETFramework进行了增强。
有关将桌面应用程序迁移到.NET5的教程,请参阅以下文章之一:
将.NETFrameworkWPF应用迁移到.NET将.NETFrameworkWindows窗体应用迁移到.NET
特定于Windows的API
应用程序仍可以在.NET支持的平台上对本机库进行平台调用。这项技术并不仅限于Windows。但是,如果你引用的库是特定于Windows的(如user32.dll或kernal32.dll),那么代码只能在Windows上正常运行。对于想要在其上运行应用的每个平台,你都必须查找特定于平台的版本,或者让你的代码足够通用以在所有平台上运行。
当将应用程序从.NETFramework移植到.NET时,应用程序可能使用了随.NETFramework一起分发的库。许多在.NETFramework中可用的API都没有移植到.NET中,因为它们依赖特定于Windows的技术,如WindowsRegistry或GDI+绘图模型。
WindowsCompatibilityPack为.NET提供了大部分的.NETFrameworkAPI面,并通过Microsoft.Windows.CompatibilityNuGet包提供。
有关详细信息,请参阅使用WindowsCompatibilityPack将代码移植到.NET中。
.NETFramework兼容性模式
.NETFramework兼容性模式是在.NETStandard2.0中引入的。使用此兼容性模式,.NETStandard和.NET5及更高版本(以及.NETCore3.1)项目可以在仅适用于Windows的情况下引用.NETFramework库。引用.NETFramework库不适用于所有项目(如库使用WindowsPresentationFoundation(WPF)API时),但它的开启了很多移植方案。有关详细信息,请参阅分析依赖项以将代码从.NETFramework移植到.NET中。
跨平台
.NET(旧称为.NETCore)是为跨平台而设计的。如果代码不依赖特定于Windows的技术,那么它可以在macOS、Linux和Android等其他平台上运行。这包括如下项目类型:
库基于控制台的工具自动化ASP.NET站点
.NETFramework是仅适用于Windows的组件。当代码使用特定于Windows的技术或API(如Windows窗体和WindowsPresentationFoundation(WPF))时,代码仍可以在.NET上运行,但不能在其他操作系统上运行。
库或基于控制台的应用程序不需要太多更改就可以跨平台使用。当移植到.NET时,可能需要考虑这一点,并在其他平台上测试应用程序。
.NETStandard的未来
.NETStandard是针对多个.NET实现推出的一套正式的.NETAPI规范。推出.NETStandard的背后动机是要提高.NET生态系统中的一致性。自.NET5起,采用了一种不同的方法来建立一致性;使用这种新方法,在很多情况下,都不需要使用.NETStandard。有关详细信息,请参阅.NET5和.NETStandard。
.NETStandard2.0是支持.NETFramework的最后一个版本。
移植辅助工具
可以使用不同的工具来帮助自动执行迁移的某些方面,而不是将应用程序从.NETFramework手动移植到.NET中。移植复杂的项目本身就是一个复杂的过程。这些工具可能在此过程中有所帮助。
即使你使用工具来帮助移植应用程序,也应查阅本文中的“移植时的注意事项”部分。
.NET升级助手
.NET升级助手是一款可以在不同类型的.NETFramework应用上运行的命令行工具。它旨在帮助将.NETFramework应用升级到.NET5。在运行此工具后,大多数情况下,应用将需要更多操作才能完成迁移。此工具会安装可以帮助完成迁移的分析器。此工具适用于以下类型的.NETFramework应用程序:
Windows窗体WPFASP.NETMVC控制台类库
此工具使用本文中列出的其他工具,并指导迁移过程。若要详细了解此工具,请参阅.NET升级助手概述。
try-convert
try-convert工具是一款.NET全局工具,可用于将项目或整个解决方案转换为.NETSDK,包括将桌面应用迁移到.NET5。但是,如果你的项目有复杂的生成进程(如自定义任务、目标或导入),则不建议使用此工具。
有关详细信息,请参阅try-convertGitHub存储库。
.NET可移植性分析器
.NET可移植性分析器是一种工具,可分析程序集并为应用程序或库提供有关缺失的.NETAPI的详细报告,以便在指定的目标.NET平台上实现可移植性。
若要使用VisualStudio中的.NET可移植性分析器,请从市场中安装此扩展。
有关详细信息,请参阅.NET可移植性分析器。
平台兼容性分析器
平台兼容性分析器分析你是否在使用将会在运行时抛出PlatformNotSupportedException的API。尽管这并不常见,但如果从.NETFramework4.7.2或更高版本进行移动,最好进行检查。若要详细了解会在.NET上抛出异常的API,请参阅始终在.NETCore上抛出异常的API。
有关详细信息,请参阅平台兼容性分析器。
移植时的注意事项
将应用程序移植到.NET时,请按顺序考虑以下建议。
??考虑使用.NET升级助手来迁移项目。尽管此工具处于预览阶段,但它自动执行本文中详细介绍的大部分手动步骤,并为你继续迁移路径提供了一个很好的起点。
??考虑先检查依赖项。依赖项必须定目标到.NET5、.NETStandard或.NETCore。
??务必从NuGetpackages.config文件迁移到项目文件中的PackageReference设置。使用VisualStudio转换package.config文件。
??考虑升级到最新的项目文件格式,即使你还不能移植应用,也不例外。.NETFramework项目使用过时的项目格式。尽管最新的项目格式(称为“SDK样式项目”)是为.NETCore及更高版本创建的,它们也适用于.NETFramework。拥有最新格式的项目文件可以为将来移植应用打下良好的基础。
??务必将.NETFramework项目重新定目标到.NETFramework4.7.2及更高版本。在.NETStandard不支持现有API情况下,这可确保最新备用API的可用性。
??考虑定目标到.NET5(而不是.NETCore3.1)。虽然.NETCore3.1是长期支持(LTS)版本,但.NET5是最新的,并且.NET6也将在发布后成为LTS。
??务必为Windows窗体和WPF项目定目标到.NET5。.NET5包含许多对桌面应用的改进。
??若要迁移也可以用于.NETFramework项目的库,请考虑定目标到.NETStandard2.0。也可以为库设定多个目标,同时定目标到.NETFramework和.NETStandard。
??如果迁移之后出现缺少API的错误,请务必添加对Microsoft.Windows.CompatibilityNuGet包的引用。大部分.NETFrameworkAPI面是通过NuGet包提供给.NET的。
参考文献:
https://docs.microsoft.com/en-us/dotnet/core/porting
本系列技术大约30篇文章,欢迎关注、点赞、评论、转发,每天都能获取IT优质内容。
系列博客文章导航
《.NET平台系列22.NETCore和.NETFramework的选择建议》
《.NET平台系列21.NETCore对比.NETFramework》
\u0002
\u0002
\u0002
\u0002
\u0002
OK,关于机场网站源码分享和机场网页的内容到此结束了,希望对大家有所帮助。
