.NET 6的Nuget包验证怎么用
这篇文章主要介绍“.NET 6的Nuget包验证怎么用”,在日常操作中,相信很多人在.NET 6的Nuget包验证怎么用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”.NET 6的Nuget包验证怎么用”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
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包验证怎么用”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341