返回顶部
首页 > 资讯 > 后端开发 > ASP.NET >.NET 6新特性试用之Nuget包验证
  • 452
分享到

.NET 6新特性试用之Nuget包验证

2024-04-02 19:04:59 452人浏览 薄情痞子
摘要

目录前言:Demo结论:前言: 我们常常需要将.net类库打包成Nuget包,以便多个项目公用。 一旦修改类库,​尽管代码可以运行​,并成功打包成新版本​,看起来一切正常​,​但是​

前言:

我们常常需要将.net类库打包成Nuget包,以便多个项目公用。

一旦修改类库,​尽管代码可以运行​,并成功打包成新版本​,看起来一切正常​,​但是​你无法保证该更改是安全且兼容的。

而在.NET 6中,提供了包验证工具,帮助我们检测这一点。

Demo

使用方式也非常简单,只需修改项目文件,加上​​EnablePackageValidation​​属性:

<EnablePackageValidation>true</EnablePackageValidation>

包验证工具提供了三种验证器:

  • ​Baseline version validator​:根据先前发布的稳定版本的软件包验证类库项目。
  • ​Compatible runtime validator​:验证特定于运行时的实现程序集是否彼此兼容以及是否与编译时程序集兼容。
  • ​Compatible framework validator​: 验证针对一个框架版本编译的代码同样可以在包中的所有其他框架版本上运行。

以Baseline version validator为例。假设1.0.0版本有如下方法:

public class Class1
{
    public void Demo(string param1)
    { 
        Console.WriteLine("Demo 1.0.0: {param1}");
    }
}

当我们接到需求,为​​Demo​​方法增加了参数:

public class Class1
{
    public static void Demo(string param1, string param2)
    {
        Console.WriteLine("Demo 1.1.0: {param1} {param2}");
    }
}

代码逻辑没有问题,但是当我们发布1.1.0版本后,而引用了这个包的项目也包含引用过1.0.0版本的其他类库。那么运行时很可能收到如下异常:

现在让我们加上​​Baseline version validator​​。修改类库项目文件内容如下:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>net6.0</TargetFramework>
   <PackageVersion>1.1.0</PackageVersion>
   <EnablePackageValidation>true</EnablePackageValidation>
   <PackageValidationBaselineVersion>1.0.0</PackageValidationBaselineVersion>
  </PropertyGroup>

</Project>

​​PackageValidationBaselineVersion​​就是用于对比的基线版本。

再次使用​​dotnet pack​​打包,你将会收到类似如下错误提示:

error CP0002: Member 'ClassLibrary1.Class1.Demo(string)' exists on [Baseline] lib/net6.0/ClassLibrary1.dll but not on lib/net6.0/ClassLibrary1.dll

按照消息提示的那样,我们可以修改成如下代码进行修复:

public class Class1
{
    public static void Demo(string param1)
    {
        Demo(param1,"");
    }
    public static void Demo(string param1, string param2)
    {
        Console.WriteLine("Demo 1.1.0: {param1} {param2}");
    }
}

结论:

​包验证工具允许开发人员在包开发过程中验证他们的包是否一致且格式良好。它允许开发人员根据以前的版本、框架的版本和运行时来验证包。​​

到此这篇关于.NET 6新特性试用之Nuget包验证的文章就介绍到这了,更多相关 Nuget包验证内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: .NET 6新特性试用之Nuget包验证

本文链接: https://lsjlt.com/news/142381.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作