.NET 6 攻略大全(四)( 四 )


安装 CLI 模板后 , 您可以通过和检查更新是否可用 。 --update-check--update-apply
▌NuGet 包验证
包验证工具使 NuGet 库开发人员能够验证他们的包是否一致且格式正确 。
这包括:

  • 验证版本之间没有重大更改 。
  • 验证包对于所有特定于运行时的实现是否具有相同的公共 API 集 。
  • 确定任何目标框架或运行时适用性差距 。
该工具是 SDK 的一部分 。 使用它的最简单方法是在项目文件中设置一个新属性 。
<EnablePackageValidation> true </EnablePackageValidation> ▌更多 Roslyn 分析仪
在 .NET 5 中 , 我们提供了大约 250 个带有 .NET SDK 的分析器 。 其中许多已经存在 , 但作为 NuGet 包在带外发送 。 我们为 .NET 6 添加了更多分析器 。
默认情况下 , 大多数新分析器都在信息级别启用 。 您可以通过如下配置分析模式在警告级别启用这些分析器:<AnalysisMode>All</AnalysisMode>
我们为 .NET 6 发布了我们想要的一组分析器(加上一些附加功能) , 然后将它们中的大多数做成了可供抓取的 。 社区添加了几个实现 , 包括这些 。
贡献者问题标题
纽厄尔·克拉克dotnet/运行时 #33777使用基于跨度的string.Concat
纽厄尔·克拉克dotnet/运行时 #33784解析时优先string.AsSpanstring.Substring
纽厄尔·克拉克dotnet/运行时 #33789覆盖Stream.ReadAsync/WriteAsync
纽厄尔·克拉克dotnet/运行时 #35343替换为Dictionary<,>.Keys.ContainsContainsKey
纽厄尔·克拉克dotnet/运行时 #45552使用代替String.EqualsString.Compare
梅克特雷尔dotnet/运行时 #47180使用代替String.Contains(char)String.Contains(String)
感谢 Meik Tranel 和 Newell Clark 。
▌为 Platform Compatibility Analyzer 启用自定义防护
CA1416 平台兼容性分析器已经使用 OperatingSystem 和 RuntimeInformation 中的方法识别平台防护 , 例如 OperatingSystem.IsWindows 和OperatingSystem.IsWindowsVersionAtLeast 。 但是 , 分析器无法识别任何其他保护可能性 , 例如缓存在字段或属性中的平台检查结果 , 或者在辅助方法中定义了复杂的平台检查逻辑 。
为了允许自定义守卫的可能性 , 我们添加了新属性 SupportedOSPlatformGuard并UnsupportedOSPlatformGuard 使用相应的平台名称和/或版本注释自定义守卫成员 。 此注释被平台兼容性分析器的流分析逻辑识别和尊重 。
▌用法
[UnsupportedOSPlatformGuard("browser")] // The platform guard attribute #if TARGET_BROWSER internal bool IsSupported => false; #else internal bool IsSupported => true; #endif [UnsupportedOSPlatform("browser")]void ApiNotSupportedOnBrowser { }
void M1{ApiNotSupportedOnBrowser; // Warns: This call site is reachable on all platforms.'ApiNotSupportedOnBrowser' is unsupported on: 'browser'
if (IsSupported){ApiNotSupportedOnBrowser; // Not warn}}
[SupportedOSPlatform("Windows")][SupportedOSPlatform("Linux")]void ApiOnlyWorkOnWindowsLinux { }
[SupportedOSPlatformGuard("Linux")][SupportedOSPlatformGuard("Windows")]private readonly bool _isWindowOrLinux = OperatingSystem.IsLinux || OperatingSystem.IsWindows;

特别声明:本站内容均来自网友提供或互联网,仅供参考,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。