网站没制作好可以备案吗,扶贫网站建设的意义,wordpress菜单删不掉,网站推广公司就去柚米前言我们常常需要将.NET类库打包成Nuget包#xff0c;以便多个项目公用。一旦修改类库#xff0c;尽管代码可以运行#xff0c;并成功打包成新版本#xff0c;看起来一切正常#xff0c;但是你无法保证该更改是安全且兼容的。而在.Net 6中#xff0c;提供了包验证工具以便多个项目公用。一旦修改类库尽管代码可以运行并成功打包成新版本看起来一切正常但是你无法保证该更改是安全且兼容的。而在.Net 6中提供了包验证工具帮助我们检测这一点。Demo使用方式也非常简单只需修改项目文件加上EnablePackageValidation属性EnablePackageValidationtrue/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 SdkMicrosoft.NET.SdkPropertyGroupTargetFrameworknet6.0/TargetFrameworkPackageVersion1.1.0/PackageVersionEnablePackageValidationtrue/EnablePackageValidationPackageValidationBaselineVersion1.0.0/PackageValidationBaselineVersion/PropertyGroup/ProjectPackageValidationBaselineVersion就是用于对比的基线版本。再次使用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});}
}结论包验证工具允许开发人员在包开发过程中验证他们的包是否一致且格式良好。它允许开发人员根据以前的版本、框架的版本和运行时来验证包。如果你觉得这篇文章对你有所启发请关注我的个人公众号”My IO“