这篇文章主要介绍“.NET 6的Nuget包验证怎么用”,在日常操作中,相信很多人在.NET 6的Nuget包验证怎么用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”.NET 6的Nuget包验证怎么用”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
使用方式也非常简单,只需修改项目文件,加上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包验证怎么用”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。