运维开发网

获得NET6新功能试用版的软件包验证

运维开发网 https://www.qedev.com 2022-07-11 22:46 出处:网络
这篇文章主要介绍了.NET?6新特性试用之Nuget包验证,将.NET类库打包成Nuget包,以便多个项目公用,下面我们就来学习西还内容,详细资料需要的朋友可以参考下面文章

这篇文章主要介绍了.NET?6新特性试用之Nuget包验证,将.NET类库打包成Nuget包,以便多个项目公用,下面我们就来学习西还内容,详细资料需要的朋友可以参考下面文章


前言:

我们经常需要打包。NET类库到Nuget包中,以便多个项目可以共享它们。

一旦类库被修改,虽然代码可以运行并成功打包成新版本,一切看起来都很正常,但你不能保证修改是安全的、兼容的。

英寸Net 6中,提供了包验证工具来帮助我们检测这一点。


Demo

用法也很简单,只需修改项目文件,添加EnablePackageValidation属性即可:

lt;EnablePackageValidationgt;truelt;/EnablePackageValidationgt;

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

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

以基线版本验证器为例。假设1.0.0版有以下方法:

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

当我们收到请求时,我们向演示方法添加了参数:

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版本的类库。那么运行时可能会收到以下异常:


现在让我们添加基线版本验证器。修改类库项目文件的内容,如下所示:

lt;Project Sdk="Microsoft.NET.Sdk"gt; lt;PropertyGroupgt; lt;TargetFrameworkgt;net6.0lt;/TargetFrameworkgt; lt;PackageVersiongt;1.1.0lt;/PackageVersiongt; lt;EnablePackageValidationgt;truelt;/EnablePackageValidationgt; lt;PackageValidationBaselineVersiongt;1.0.0lt;/PackageValidationBaselineVersiongt; lt;/PropertyGroupgt;lt;/Projectgt;

PackagevalidationBaselineVersion是用于比较的基线版本。

再次使用dotnet pack进行打包,您将收到类似于以下内容的错误消息:

错误CP0002:成员# 39;类库1。Class1 .演示(字符串)# 39;存在于[Baseline]lib/net6.0/ClassLibrary1.dll中,但不存在于lib/net 6.0/class library 1 . 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}"); }}


结论:

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

这就是这篇关于Nuget包验证的文章。NET 6新功能试用版。更多相关Nuget包验证内容

0

精彩评论

暂无评论...
验证码 换一张
取 消