您现在的位置是:网站首页> 编程资料编程资料
.NET 6新特性试用之Nuget包验证_实用技巧_
2023-05-24
254人已围观
简介 .NET 6新特性试用之Nuget包验证_实用技巧_
前言:
我们常常需要将.NET类库打包成Nuget包,以便多个项目公用。
一旦修改类库,尽管代码可以运行,并成功打包成新版本,看起来一切正常,但是你无法保证该更改是安全且兼容的。
而在.Net 6中,提供了包验证工具,帮助我们检测这一点。
Demo
使用方式也非常简单,只需修改项目文件,加上EnablePackageValidation属性:
true
包验证工具提供了三种验证器:
- 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。修改类库项目文件内容如下:
net6.0 1.1.0 true 1.0.0
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包验证内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
相关内容
- ASP.NET Core启动地址配置方法及优先级顺序_实用技巧_
- .Net MVC将Controller数据传递到View_实用技巧_
- 基于 .NET 6 的ASP.NET Core启动地址配置方法及优先级顺序_实用技巧_
- ASP.NET CORE实现跨域_实用技巧_
- ASP.NET CORE读取json格式配置文件_基础应用_
- Web API身份认证解决方案之Basic基础认证_实用技巧_
- Web API中使用Autofac实现依赖注入_实用技巧_
- 国产化之Arm64 CPU+银河麒麟系统安装.NetCore的步骤详解_实用技巧_
- 国产化之银河麒麟安装.netcore3.1的详细步骤(手动安装)_实用技巧_
- 国产化之银河麒麟安装.NetCore包管理器方式(步骤详解)_实用技巧_
