创建私人网站,宿州网站建设工作室,网商之窗高仿手表,网站开发所需能力本文翻译自Scott Hanselman博客#xff1a;https://www.hanselman.com/blog/WritingSmarterCrossplatformNETCoreAppsWithTheAPIAnalyzerAndWindowsCompatibilityPack.aspx正文#xff1a;这是最近这几周你应该知道的一对.Net Core界的优秀工具。我们在编写或者移植跨平台代码… 本文翻译自Scott Hanselman博客https://www.hanselman.com/blog/WritingSmarterCrossplatformNETCoreAppsWithTheAPIAnalyzerAndWindowsCompatibilityPack.aspx正文这是最近这几周你应该知道的一对.Net Core界的优秀工具。我们在编写或者移植跨平台代码时它们非常有帮助。.NET API 分析器首先是API 分析器。如你所知有时候我们会遇到过时的API或者一个方法你可以在Windows下使用但是在Linux下却不能工作。API分析器是一个RoslynRoslyn是C#/.NET编译器的名称分析器它可以很容易地添加到你的项目通过一个NuGet包。你所要做的就是添加这个包之后你将立即得到警告或者波浪线表示API有问题。看看这个简单地例子。我将生成一个简单地控制台应用它已经添加了API分析器。注意这个版本号是目前的以后会改变。C:\supercrossplatapp dotnet new console
C:\supercrossplatapp dotnet add package Microsoft.DotNet.Analyzers.Compatibility --version 0.1.2-alpha 然后我将使用一个只能在Windows下使用的API。但是我依旧希望在任何平台下都可以运行。static void Main(string[] args){ Console.WriteLine(Hello World!); if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) { var w Console.WindowWidth; Console.WriteLine($Console Width is {w}); }}之后我使用“dotnet build”命令或者运行命令运行也包含build动作然后我得到了一个漂亮的警告这个API不能工作在所有平台下。C:\supercrossplatapp dotnet buildProgram.cs(14,33): warning PC001: Console.WindowWidth isnt supported on Linux, MacOSX [C:\Users\scott\Desktop\supercrossplatapp\supercrossplatapp.csproj] supercrossplatapp - C:\supercrossplatapp\bin\Debug\netcoreapp2.0\supercrossplatapp.dllBuild succeeded..NET团队的Olia做了一个很好的YouTube视频她的视频展示了API分析器是如何工作的。API分析器的代码已经上传到Github。如果你发现了bug请在上面提issue.NET CORE的windows兼容包第二个.NET Core的Windows兼容包是一个很好的补充技术。当.NET Core 2.0开发完成并推出后它包含3.2万个很好地兼容现有.NET Framework代码的API。实际上它们确实兼容地非常好我之前可以很容易地将一个15年前的.NET程序移植到.NET Core2.0上这个过程中都没有碰到什么麻烦。从.NET Standard1.6的1.3万个api到.NET Standard2.0的3.2万个API他们增加了一倍多的可用API.NET Standard非常的酷炫因为它支持如下平台.NET Framework 4.6.1.NET Core 2.0Mono 5.4Xamarin.iOS 10.14Xamarin.Mac 3.8Xamarin.Android 7.5当你迁移代码到.NET Core时会有大量的Windows平台特有的依赖你可能会遇到有些API在.NET Standard找不到的情况。这时这个新的NuGet包Microsoft.Windows.Compatibility预览它可以提供原先只在.NET Framework可用的API。在这个兼容包里面的API会包含两种类型。一种是这个API原先就是Windows的一部分但是也可以跨平台工作。另外一种是只能在windows下工作因为他们是操作系统特有的。例如API访问WIndows注册表这是Windows下独有的。但是System.DirectoryServices或者System.Drawing他们却可以在任何平台都工作的很好。Windows兼容包在.NET Core现在可用Api的基础上新增呢20000多个API。可以参阅Immol录制的视频。问题在于如果这些不可用API是你使用.NET Core的拦路虎那么现在你可以借助兼容包耶但是你要知道你为什么需要迁移到.NET Core。.NET Core与完整版.NET Framework都可以在Windows上工作。如果你的程序目前工作的很好并且不需要.NET Core的新特性那么就不需要移植到.NET Core。这是规则列表使用.NET Core的情况你有跨平台需求你的目标是微服务你使用Dorcker容器你有高性能与可拓展需求你需要同步.NET版本使用.NET Core的情况你的程序当前使用.NET Framework推荐采用拓展来替代迁移你的程序使用第三方.NET库或者NuGet包它们的.NET Core版本还不可用你所使用的.NET技术在.NET Core上还没有支持你的程序所使用的操作系统平台目前.NET Core还不支持