珠海企业网站建站,栖霞网站建设,wordpress备案号放置,wordpress裁剪缩略图背景很多情况下#xff0c;我们编写了一些工具库之后#xff0c;往往在某些框架版本中会出现一些问题#xff0c;比如本人最近写的一个导入导出的工具库Magicodes.IE就出现了以下问题#xff1a;#xff08;GitHub#xff1a;https://github.com/xin-lai/Magicodes.IE我们编写了一些工具库之后往往在某些框架版本中会出现一些问题比如本人最近写的一个导入导出的工具库Magicodes.IE就出现了以下问题GitHubhttps://github.com/xin-lai/Magicodes.IE虽然支持标准库2.0但是通过编写单元测试确实发现如此因此单元测试确实需要针对各个框架版本进行测试并且相关代码需要针对框架进行兼容修改。那么如何实现呢接下来我们一步步实践。 .NET框架版本说明 最新目标框架版本下表定义了最常见的目标框架、如何引用这些框架以及它们实现的 .NET Standard 版本。 这些目标框架版本是最新的稳定版本。 预览版不会显示。 目标框架名字对象 (TFM) 是一个标准化令牌格式用于指定 .NET 应用或库的目标框架。目标 Framework最新 稳定版本目标框架名字对象 (TFM)已实现 .NET Standard 版本.NET Standard2.1netstandard2.1不可用.NET Core3.0netcoreapp3.02.1.NET Framework4.8net482.0 支持的目标框架版本目标框架通常由 TFM 引用。 下表显示 .NET Core SDK 和 NuGet 客户端支持的目标框架。 等效项显示在括号内。 例如win81 对于 netcore451 来说等效于 TFM。 如何让工程支持多个框架以单元测试工程为例PropertyGroupTargetFrameworksnetcoreapp3.0;netcoreapp2.2;netcoreapp3.1;net461/TargetFrameworksIsPackablefalse/IsPackable/PropertyGroup
如上述代码所示我们可以通过“TargetFrameworks”元素来定义多个框架。那么如何在工程里面添加条件判断以进行编译呢ItemGroup Condition $(TargetFramework) net461 PackageReference IncludeNewtonsoft.Json Version12.0.3 //ItemGroup
除了工程里面我们代码中如何针对不同的框架版本编写代码呢
#if NET461return excelPackage.Workbook.Worksheets[typeof(T).GetDisplayName()] ??excelPackage.Workbook.Worksheets[ExcelImporterSettings.SheetName] ??excelPackage.Workbook.Worksheets[1];
#elsereturn excelPackage.Workbook.Worksheets[typeof(T).GetDisplayName()] ??excelPackage.Workbook.Worksheets[ExcelImporterSettings.SheetName] ??excelPackage.Workbook.Worksheets[0];
#endif
这些“NET461”的符号都有哪些呢如下所示 完整的 .NET Core 目标框架的预处理器符号列表目标框架符号.NET FrameworkNETFRAMEWORK, NET20, NET35, NET40, NET45, NET451, NET452, NET46, NET461, NET462, NET47, NET471, NET472, NET48.NET StandardNETSTANDARD, NETSTANDARD1_0, NETSTANDARD1_1, NETSTANDARD1_2, NETSTANDARD1_3, NETSTANDARD1_4, NETSTANDARD1_5, NETSTANDARD1_6, NETSTANDARD2_0, NETSTANDARD2_1.NET CoreNETCOREAPP, NETCOREAPP1_0, NETCOREAPP1_1, NETCOREAPP2_0, NETCOREAPP2_1, NETCOREAPP2_2, NETCOREAPP3_0, NETCOREAPP3_1 Magicodes.IE之多框架版本测试了解了这些知识我们就可以编写多框架版本的实现和单元测试了。 单元测试添加多框架支持修改TargetFramework为TargetFrameworks设置分组根据目标框架分组修复编译错误执行单元测试单元测试结果如下图所示针对具体的单元测试我们还可以指定目标框架进行运行和调试 总结和经验分享结合整改的过程我们可以得出以下经验单元测试编写时的异常消息判断尽量使用字符串包含判断而不判断完整格式。如上面所示左侧代码在net461、netcoreapp2.2都是无法通过的格式化的参数模板不一致。特定框架、平台代码需添加符号判断如下面示例默认情况下.NET Core 不提供除代码页 28591 以外的其他任何代码页编码和 Unicode 编码例如 UTF-8 和 UTF-16所以我们可以使用以下代码进行添加但是需要排除.NET Framework除了特定代码之外有时还有特定依赖的包在某些情况下不要使用过新的语法比如以下代码转载是一种动力 分享是一种美德如果喜欢作者的文章请关注【麦扣聊技术】订阅号以便第一时间获得最新内容。本文版权归作者和湖南心莱信息科技有限公司共有欢迎转载但未经作者同意必须保留此段声明且在文章页面明显位置给出原文连接否则保留追究法律责任的权利。文档官网docs.xin-lai.comQQ群编程交流群85318032 产品交流群897857351